Partilhar via


Métodos de 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 no 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 durante a execução de um lote, 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 alterou 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 será 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;  
    }  
}  

CancelBatch
CreateBatch
Referência técnica (SSRS)
Usar cabeçalhos SOAP do Reporting Services