Métodos de procesamiento por lotes

El uso de encabezados SOAP en Reporting Services permite incluir varios métodos de servicio web en una sola operación. Los métodos se ejecutan dentro del ámbito de una transacción de base de datos única, en el orden en que se llaman.

La reversión es una ventaja de usar operaciones por lotes de varios métodos. Si se produce un error en cualquiera de las llamadas al método mientras se ejecuta un lote, el servidor de informes deja de ejecutar el lote y revierte las operaciones anteriores. Esto resulta útil cuando una llamada al método depende de la finalización correcta de otras llamadas de método en ese lote.

El servicio web no proporciona semántica de bloqueo para las operaciones por lotes de varios métodos. Las filas de la base de datos del servidor de informes no se bloquean para actualizarse hasta que el mensaje se envía al servidor y se llama al comando Execute.

Tampoco hay controles de simultaneidad para garantizar que la base de datos no ha cambiado desde la última lectura de los datos. Si dos clientes modifican el mismo elemento, la última actualización se realiza correctamente si los parámetros siguen siendo válidos (por ejemplo, no se ha cambiado el nombre del elemento).

En el ejemplo siguiente se llama al CreateFolder método tres veces y se ejecutan estas llamadas como un solo lote. Si se produce un error en alguna de las llamadas, CreateFolder se cancela todo el lote.

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;  
    }  
}  

Véase también

CancelBatch
CreateBatch
Referencia técnica (SSRS)
Uso de encabezados SOAP de Reporting Services