Compartilhar via


Métodos de envio 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 no escopo de uma única transação de banco de dados, na ordem em que são chamados.

A reversão é uma vantagem do uso de operações em lotes de vários métodos. Se ocorrer um erro em qualquer uma das chamadas de método enquanto um lote estiver em execução, o servidor de relatório interromperá a execução do lote e reverterá as operações anteriores. Isso é ú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 de 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 comando Executar seja chamado.

Também não há controles de simultaneidade para garantir que o banco de dados não tenha sido alterado desde a última leitura dos dados. Se dois clientes modificarem o mesmo item, a última atualização terá êxito se os parâmetros ainda forem válidos (por exemplo, o item não foi renomeado).

O exemplo a seguir chama o CreateFolder método três vezes e executa essas chamadas como um único lote. Se qualquer uma das chamadas CreateFolder falhar, todo o lote 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 = "http://<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 = "http://<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;  
    }  
}  

Consulte Também

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