Batchmethoden

Durch die Verwendung von SOAP-Headern in Reporting Services können Sie mehrere Webdienstmethoden in einen einzelnen Vorgang aufnehmen. Methoden werden innerhalb des Bereichs einer einzelnen Datenbanktransaktion in der Reihenfolge ausgeführt, in der sie aufgerufen werden.

Rollback hat den Vorteil, dass aus mehreren Methoden bestehende Batchvorgänge verwendet werden können. Wenn bei Methodenaufrufen während der Ausführung eines Batches ein Fehler auftritt, beendet der Berichtsserver die Ausführung des Batches und setzt alle vorherigen Vorgänge zurück. Diese Aktion ist nützlich, wenn ein Methodenaufruf vom erfolgreichen Abschluss anderer Methodenaufrufe in diesem Batch abhängt.

Der Webdienst stellt keine Sperrsemantik für Batchvorgänge mit mehreren Methoden bereit. Zeilen in der Berichtsserverdatenbank werden erst gesperrt, wenn die Nachricht an den Server gesendet wird und der Execute Befehl aufgerufen wird.

Es gibt keine Parallelitätssteuerelemente, um sicherzustellen, dass niemand die Datenbank seit dem letzten Lesen geändert hat. Wenn zwei Clients dasselbe Element ändern, ist die letzte Aktualisierung erfolgreich, wenn die Parameter noch gültig sind (z. B. der Name des Elements ist identisch).

Im folgenden Beispiel wird die CreateFolder-Methode dreimal aufgerufen, und diese Aufrufe werden in einem Batch ausgeführt. Wenn einer der Aufrufe von CreateFolder fehlschlägt, wird der gesamte Batch abgebrochen.

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
Technische Referenz (SSRS)
Verwenden von SOAP-Headern für Reporting Services