Méthodes Batch
L'utilisation d'en-têtes SOAP dans Reporting Services vous permet d'inclure plusieurs méthodes de service web dans une même opération. Les méthodes s’exécutent dans l’étendue d’une transaction de base de données unique, dans l’ordre dans lequel elles sont appelées.
La restauration est un avantage offert par l'utilisation de plusieurs méthodes de traitements par lots. Si une erreur se produit sur des appels de méthode pendant qu’un lot est en cours d’exécution, le serveur de rapports arrête d’exécuter le lot et restaure toutes les opérations précédentes. Cette action est utile lorsqu’un appel de méthode dépend de la réussite d’autres appels de méthode dans ce lot.
Le service Web ne fournit pas de sémantique de verrouillage pour les opérations par lots à plusieurs méthodes. Les lignes de la base de données du serveur de rapports ne sont pas verrouillées pour la mise à jour tant que le message n’est pas envoyé au serveur et que la Execute
commande est appelée.
Aucun contrôle d’accès concurrentiel n’existe pour garantir qu’aucune personne n’a modifié la base de données depuis la dernière lecture des données. Si deux clients modifient le même élément, la dernière mise à jour réussit si les paramètres sont toujours valides (par exemple, le nom de l’élément est le même).
L'exemple suivant appelle la méthode CreateFolder trois fois et exécute ces appels comme un lot unique. Si un des appels à CreateFolder échoue, le lot entier est annulé.
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;
}
}