批处理方法

使用 Reporting Services 中的 SOAP 标头,可以在单个作中包含多个 Web 服务方法。 方法在单个数据库事务的范围内运行,按照调用它们的顺序运行。

回滚是使用多方法批处理作的一个优点。 如果在运行批处理时对任何方法调用发生错误,报表服务器将停止运行批处理并回滚以前的任何作。 当方法调用取决于该批处理中其他方法调用的成功完成时,这非常有用。

Web 服务不提供多方法批处理作的锁定语义。 在将消息发送到服务器并调用 Execute 命令之前,报表服务器数据库中的行不会锁定进行更新。

此外,也没有并发控制,以确保自上次读取数据以来数据库未更改。 如果两个客户端修改同一项,则如果参数仍然有效(例如,该项尚未重命名),则上次更新会成功。

以下示例调用 CreateFolder 该方法三次,并将这些调用作为单个批处理运行。 如果任何调用 CreateFolder 失败,将取消整个批处理。

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

另请参阅

CancelBatch
CreateBatch
技术参考 (SSRS)
使用 Reporting Services SOAP 标头