Métodos em lote
O uso de cabeçalhos SOAP no Reporting Services permite que você inclua vários métodos de serviço Web em uma única operação. Os métodos são executados dentro do escopo de uma única transação de banco de dados, na ordem em que são chamados.
A reversão é uma vantagem da utilização de operações de lote de vários métodos. Se ocorrer um erro em qualquer chamada de método enquanto um lote estiver em execução, o servidor de relatório interromperá a execução do lote e reverterá todas as operações anteriores. Essa ação é útil quando uma chamada de método depende da conclusão bem-sucedida de outras chamadas de método nesse lote.
O serviço Web não fornece semântica de bloqueio para operações em lote de vários métodos. As linhas no banco de dados do servidor de relatório não são bloqueadas para atualização até que a mensagem seja enviada ao servidor e o Execute
comando seja chamado.
Não existem controles de simultaneidade para garantir que ninguém tenha alterado o banco de dados desde que os dados foram lidos pela última vez. Se dois clientes modificarem o mesmo item, a última atualização será bem-sucedida se os parâmetros ainda forem válidos (por exemplo, o nome do item é o mesmo).
O exemplo a seguir chama o método CreateFolder três vezes e executa essas chamadas como um único lote. Se qualquer uma das chamadas para CreateFolder falhar, o lote inteiro será cancelado.
Imports System
Imports System.Web.Services.Protocols
Imports myNamespace.MyReferenceName
Class Sample
Sub Main(args() As String)
Dim rs As New ReportingService2005()
rs.Credentials = System.Net.CredentialCache.DefaultCredentials
' Set the base Web service URL of the source server
rs.Url = "https://<Server Name>/reportserver/ReportService2005.asmx"
Dim bh As New BatchHeader()
bh.BatchId = service.CreateBatch()
rs.BatchHeaderValue = bh
rs.CreateFolder("New Folder1", "/", Nothing)
rs.CreateFolder("New Folder2", "/", Nothing)
rs.CreateFolder("New Folder3", "/", Nothing)
Console.WriteLine("Creating folders...")
rs.BatchHeaderValue = bh
rs.ExecuteBatch()
Console.WriteLine("Folders created successfully.")
rs.BatchHeaderValue = Nothing
End Sub
End Class
using System;
using System.Web.Services.Protocols;
using myNamespace.MyReferenceName;
class Sample
{
static void Main(string[] args)
{
ReportingService2005 rs = new ReportingService2005();
rs.Credentials = System.Net.CredentialCache.DefaultCredentials;
// Set the base Web service URL of the source server
rs.Url = "https://<Server Name>/reportserver/ReportService2005.asmx"
BatchHeader bh = new BatchHeader();
bh1.BatchID = service.CreateBatch();
rs.BatchHeaderValue = bh;
rs.CreateFolder("New Folder1", "/", null);
rs.CreateFolder("New Folder2", "/", null);
rs.CreateFolder("New Folder3", "/", null);
Console.WriteLine("Creating folders...");
rs.BatchHeaderValue = bh1;
rs.ExecuteBatch();
Console.WriteLine("Folders created successfully.");
rs.BatchHeaderValue = null;
}
}