ReportingService2010.CreateDataDrivenSubscription Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Erstellt für ein bestimmtes Element ein datengesteuertes Abonnement. Diese Methode gilt für den Report
-Elementtyp.
public:
System::String ^ CreateDataDrivenSubscription(System::String ^ ItemPath, ReportService2010::ExtensionSettings ^ ExtensionSettings, ReportService2010::DataRetrievalPlan ^ DataRetrievalPlan, System::String ^ Description, System::String ^ EventType, System::String ^ MatchData, cli::array <ReportService2010::ParameterValueOrFieldReference ^> ^ Parameters);
[System.Web.Services.Protocols.SoapDocumentMethod("http://schemas.microsoft.com/sqlserver/reporting/2010/03/01/ReportServer/CreateDataDrivenSubscription", ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped, RequestNamespace="http://schemas.microsoft.com/sqlserver/reporting/2010/03/01/ReportServer", ResponseNamespace="http://schemas.microsoft.com/sqlserver/reporting/2010/03/01/ReportServer", Use=System.Web.Services.Description.SoapBindingUse.Literal)]
[System.Web.Services.Protocols.SoapHeader("ServerInfoHeaderValue", Direction=System.Web.Services.Protocols.SoapHeaderDirection.Out)]
[System.Web.Services.Protocols.SoapHeader("TrustedUserHeaderValue")]
public string CreateDataDrivenSubscription (string ItemPath, ReportService2010.ExtensionSettings ExtensionSettings, ReportService2010.DataRetrievalPlan DataRetrievalPlan, string Description, string EventType, string MatchData, ReportService2010.ParameterValueOrFieldReference[] Parameters);
[<System.Web.Services.Protocols.SoapDocumentMethod("http://schemas.microsoft.com/sqlserver/reporting/2010/03/01/ReportServer/CreateDataDrivenSubscription", ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped, RequestNamespace="http://schemas.microsoft.com/sqlserver/reporting/2010/03/01/ReportServer", ResponseNamespace="http://schemas.microsoft.com/sqlserver/reporting/2010/03/01/ReportServer", Use=System.Web.Services.Description.SoapBindingUse.Literal)>]
[<System.Web.Services.Protocols.SoapHeader("ServerInfoHeaderValue", Direction=System.Web.Services.Protocols.SoapHeaderDirection.Out)>]
[<System.Web.Services.Protocols.SoapHeader("TrustedUserHeaderValue")>]
member this.CreateDataDrivenSubscription : string * ReportService2010.ExtensionSettings * ReportService2010.DataRetrievalPlan * string * string * string * ReportService2010.ParameterValueOrFieldReference[] -> string
Public Function CreateDataDrivenSubscription (ItemPath As String, ExtensionSettings As ExtensionSettings, DataRetrievalPlan As DataRetrievalPlan, Description As String, EventType As String, MatchData As String, Parameters As ParameterValueOrFieldReference()) As String
Parameter
- ItemPath
- String
Die vollqualifizierte URL des Elements, für das ein datengesteuertes Abonnement erstellt werden soll, einschließlich des Dateinamens und (im SharePoint-Modus) der Erweiterung.
- ExtensionSettings
- ExtensionSettings
Ein ExtensionSettings-Objekt mit einer Liste von Einstellungen, die für die Übermittlungserweiterung spezifisch sind.
- DataRetrievalPlan
- DataRetrievalPlan
Ein DataRetrievalPlan-Objekt, das Einstellungen bereitstellt, die erforderlich sind, um Daten aus einer Übermittlungsabfrage abzurufen. Das DataRetrievalPlan-Objekt enthält einen Verweis auf ein DataSetDefinition-Objekt und ein DataSourceDefinitionOrReference-Objekt.
- Description
- String
Eine aussagekräftige Beschreibung, die Benutzern angezeigt wird.
- EventType
- String
Der Typ des Ereignisses, das das datengesteuerte Abonnement auslöst. Die gültigen Werte sind TimedSubscription
oder SnapshotUpdated
.
- MatchData
- String
Die Daten, die dem angegebenen EventType
Parameter zugeordnet sind. Dieser Parameter wird von einem Ereignis verwendet, um das datengesteuerte Abonnement mit einem ausgelösten Ereignis zu vergleichen.
- Parameters
- ParameterValueOrFieldReference[]
Ein Array von ParameterValueOrFieldReference-Objekten, das eine Liste der Parameter für das Element enthält.
Gibt zurück
Ein String
-Wert mit einer Abonnement-ID, mit der das datengesteuerte Abonnement eindeutig in der Berichtsserver-Datenbank oder SharePoint-Bibliothek identifiziert wird.
- Attribute
Beispiele
Um dieses Codebeispiel zu kompilieren, müssen Sie auf die Reporting Services WSDL verweisen und bestimmte Namespaces importieren. Weitere Informationen finden Sie unter Kompilieren und Ausführen von Codebeispielen. Im folgenden Codebeispiel wird verwendet CreateDataDrivenSubscription , um der Berichtsserver-Datenbank ein neues datengesteuertes Abonnement hinzuzufügen:
Imports System
Imports System.Web.Services.Protocols
Class Sample
Public Shared Sub Main()
Dim rs As New ReportingService2010()
rs.Credentials = System.Net.CredentialCache.DefaultCredentials
Dim report As String = "/SampleReports/Employee Sales Summary"
Dim description As String = "My new data driven subscription"
' Set the extension setting as report server email.
Dim settings As New ExtensionSettings()
settings.Extension = "Report Server Email"
' Set the extension parameter values.
Dim extensionParams(7) As ParameterValueOrFieldReference
Dim [to] As New ParameterFieldReference() ' Data-driven.
[to].ParameterName = "TO"
[to].FieldAlias = "EmailAddress"
extensionParams(0) = [to]
Dim replyTo As New ParameterValue()
replyTo.Name = "ReplyTo"
replyTo.Value = "dank@adventure-works.com"
extensionParams(1) = replyTo
Dim includeReport As New ParameterValue()
includeReport.Name = "IncludeReport"
includeReport.Value = "False"
extensionParams(2) = includeReport
Dim renderFormat As New ParameterValue()
renderFormat.Name = "RenderFormat"
renderFormat.Value = "HTML4.0"
extensionParams(3) = renderFormat
Dim priority As New ParameterValue()
priority.Name = "Priority"
priority.Value = "NORMAL"
extensionParams(4) = priority
Dim subject As New ParameterValue()
subject.Name = "Subject"
subject.Value = "Your sales report"
extensionParams(5) = subject
Dim comment As New ParameterValue()
comment.Name = "Comment"
comment.Value = "Here is the link to your report."
extensionParams(6) = comment
Dim includeLink As New ParameterValue()
includeLink.Name = "IncludeLink"
includeLink.Value = "True"
extensionParams(7) = includeLink
settings.ParameterValues = extensionParams
' Create the data source for the delivery query.
Dim delivery As New DataSource()
delivery.Name = ""
Dim dataSourceDefinition As New DataSourceDefinition()
dataSourceDefinition.ConnectString = "data source=(local);initial catalog=Employee"
dataSourceDefinition.CredentialRetrieval = CredentialRetrievalEnum.Store
dataSourceDefinition.Enabled = True
dataSourceDefinition.EnabledSpecified = True
dataSourceDefinition.Extension = "SQL"
dataSourceDefinition.ImpersonateUserSpecified = False
dataSourceDefinition.UserName = "username"
dataSourceDefinition.Password = "runUnAtt1"
delivery.Item = dataSourceDefinition
' Create the fields list.
Dim fieldsList(1) As Field
fieldsList(0) = New Field()
fieldsList(0).Name = "EmailAddress"
fieldsList(0).Alias = "EmailAddress"
fieldsList(1) = New Field()
fieldsList(1).Name = "EmpID"
fieldsList(1).Alias = "EmpID"
' Create the data set for the delivery query.
Dim dataSetDefinition As New DataSetDefinition()
dataSetDefinition.AccentSensitivitySpecified = False
dataSetDefinition.CaseSensitivitySpecified = False
dataSetDefinition.KanatypeSensitivitySpecified = False
dataSetDefinition.WidthSensitivitySpecified = False
dataSetDefinition.Fields = fieldsList
Dim queryDefinition As New QueryDefinition()
queryDefinition.CommandText = "Select * from MailList"
queryDefinition.CommandType = "Text"
queryDefinition.Timeout = 45
queryDefinition.TimeoutSpecified = True
dataSetDefinition.Query = queryDefinition
Dim results As New DataSetDefinition()
Dim changed As Boolean
Dim paramNames as String() = Nothing
Try
results = rs.PrepareQuery(delivery, dataSetDefinition, changed, paramNames)
Catch e As SoapException
Console.WriteLine(e.Detail.InnerText.ToString())
End Try
Dim dataRetrieval As New DataRetrievalPlan()
dataRetrieval.DataSet = results
dataRetrieval.Item = dataSourceDefinition
' Set the event type and match data for the delivery.
Dim eventType As String = "TimedSubscription"
Dim matchData As String = "<ScheduleDefinition><StartDateTime>2003-04-14T19:15:00-07:00</StartDateTime><WeeklyRecurrence><WeeksInterval>1</WeeksInterval><DaysOfWeek><Monday>True</Monday><Tuesday>True</Tuesday><Wednesday>True</Wednesday><Thursday>True</Thursday><Friday>True</Friday></DaysOfWeek></WeeklyRecurrence></ScheduleDefinition>"
' Set the report parameter values.
Dim parameters(2) As ParameterValueOrFieldReference
Dim empID As New ParameterFieldReference() ' Data-driven.
empID.ParameterName = "EmpID"
empID.FieldAlias = "EmpID"
parameters(0) = empID
Dim reportYear As New ParameterValue()
reportYear.Name = "ReportYear"
reportYear.Value = "2004"
parameters(1) = reportYear
Dim reportMonth As New ParameterValue()
reportMonth.Name = "ReportMonth"
reportMonth.Value = "6" ' June
parameters(2) = reportMonth
Try
Dim subscriptionID As String = rs.CreateDataDrivenSubscription(report, settings, dataRetrieval, description, eventType, matchData, parameters)
Catch e As SoapException
Console.WriteLine(e.Detail.InnerText.ToString())
End Try
End Sub 'Main
End Class 'Sample
using System;
using System.Web.Services.Protocols;
class Sample
{
public static void Main()
{
ReportingService rs = new ReportingService2010();
rs.Credentials = System.Net.CredentialCache.DefaultCredentials;
string report = "/SampleReports/Employee Sales Summary";
string description = "My new data driven subscription";
// Set the extension setting as report server email.
ExtensionSettings settings = new ExtensionSettings();
settings.Extension = "Report Server Email";
// Set the extension parameter values.
ParameterValueOrFieldReference[] extensionParams =
new ParameterValueOrFieldReference[8];
ParameterFieldReference to = new ParameterFieldReference(); // Data-driven.
to.ParameterName = "TO";
to.FieldAlias = "EmailAddress";
extensionParams[0] = to;
ParameterValue replyTo = new ParameterValue();
replyTo.Name = "ReplyTo";
replyTo.Value ="dank@adventure-works.com";
extensionParams[1] = replyTo;
ParameterValue includeReport = new ParameterValue();
includeReport.Name = "IncludeReport";
includeReport.Value = "False";
extensionParams[2] = includeReport;
ParameterValue renderFormat = new ParameterValue();
renderFormat.Name = "RenderFormat";
renderFormat.Value = "HTML4.0";
extensionParams[3] = renderFormat;
ParameterValue priority = new ParameterValue();
priority.Name = "Priority";
priority.Value = "NORMAL";
extensionParams[4] = priority;
ParameterValue subject = new ParameterValue();
subject.Name = "Subject";
subject.Value = "Your sales report";
extensionParams[5] = subject;
ParameterValue comment = new ParameterValue();
comment.Name = "Comment";
comment.Value = "Here is the link to your report.";
extensionParams[6] = comment;
ParameterValue includeLink = new ParameterValue();
includeLink.Name = "IncludeLink";
includeLink.Value = "True";
extensionParams[7] = includeLink;
settings.ParameterValues = extensionParams;
// Create the data source for the delivery query.
DataSource delivery = new DataSource();
delivery.Name = "";
DataSourceDefinition dataSourceDefinition = new DataSourceDefinition();
dataSourceDefinition.ConnectString = "data source=(local);initial catalog=Employee";
dataSourceDefinition.CredentialRetrieval = CredentialRetrievalEnum.Store;
dataSourceDefinition.Enabled = true;
dataSourceDefinition.EnabledSpecified = true;
dataSourceDefinition.Extension = "SQL";
dataSourceDefinition.ImpersonateUserSpecified = false;
dataSourceDefinition.UserName = "username";
dataSourceDefinition.Password = "runUnAtt1";
delivery.Item = dataSourceDefinition;
// Create the fields list.
Field[] fieldsList = new Field[2];
fieldsList[0] = new Field();
fieldsList[0].Name = "EmailAddress";
fieldsList[0].Alias = "EmailAddress";
fieldsList[1] = new Field();
fieldsList[1].Name = "EmpID";
fieldsList[1].Alias = "EmpID";
// Create the data set for the delivery query.
DataSetDefinition dataSetDefinition = new DataSetDefinition();
dataSetDefinition.AccentSensitivitySpecified = false;
dataSetDefinition.CaseSensitivitySpecified = false;
dataSetDefinition.KanatypeSensitivitySpecified = false;
dataSetDefinition.WidthSensitivitySpecified = false;
dataSetDefinition.Fields = fieldsList;
QueryDefinition queryDefinition = new QueryDefinition();
queryDefinition.CommandText = "Select * from MailList";
queryDefinition.CommandType = "Text";
queryDefinition.Timeout = 45;
queryDefinition.TimeoutSpecified = true;
dataSetDefinition.Query = queryDefinition;
DataSetDefinition results = new DataSetDefinition();
bool changed;
string[] paramNames;
try
{
results = rs.PrepareQuery(delivery, dataSetDefinition, out changed, out paramNames);
}
catch (SoapException e)
{
Console.WriteLine(e.Detail.InnerText.ToString());
}
DataRetrievalPlan dataRetrieval = new DataRetrievalPlan();
dataRetrieval.DataSet = results;
dataRetrieval.Item = dataSourceDefinition;
// Set the event type and match data for the delivery.
string eventType = "TimedSubscription";
string matchData = "<ScheduleDefinition><StartDateTime>2003-04-14T19:15:00-07:00</StartDateTime><WeeklyRecurrence><WeeksInterval>1</WeeksInterval><DaysOfWeek><Monday>True</Monday><Tuesday>True</Tuesday><Wednesday>True</Wednesday><Thursday>True</Thursday><Friday>True</Friday></DaysOfWeek></WeeklyRecurrence></ScheduleDefinition>";
// Set the report parameter values.
ParameterValueOrFieldReference[] parameters = new ParameterValueOrFieldReference[3];
ParameterFieldReference empID = new ParameterFieldReference(); // Data-driven.
empID.ParameterName = "EmpID";
empID.FieldAlias = "EmpID";
parameters[0] = empID;
ParameterValue reportYear = new ParameterValue();
reportYear.Name = "ReportYear";
reportYear.Value = "2004";
parameters[1] = reportYear;
ParameterValue reportMonth = new ParameterValue();
reportMonth.Name = "ReportMonth";
reportMonth.Value = "6"; // June
parameters[2] = reportMonth;
try
{
string subscriptionID = rs.CreateDataDrivenSubscription(
report, settings, dataRetrieval, description, eventType, matchData, parameters);
}
catch (SoapException e)
{
Console.WriteLine(e.Detail.InnerText.ToString());
}
}
}
Hinweise
In der folgenden Tabelle werden Header- und Berechtigungsinformationen zu diesem Vorgang dargestellt.
SOAP-Headerverwendung | (In) TrustedUserHeaderValue (Out) ServerInfoHeaderValue |
Erforderliche Berechtigungen im einheitlichen Modus | ExecuteAndView UND CreateAnySubscription |
Erforderliche Berechtigungen im SharePoint-Modus | <xref:Microsoft.SharePoint.SPBasePermissions.ViewListItems> UND <xref:Microsoft.SharePoint.SPBasePermissions.ManageAlerts> |
Die Länge des ItemPath
Parameters darf 260 Zeichen nicht überschreiten. Andernfalls wird eine SOAP-Ausnahme mit dem Fehlercode rsItemLengthExceeded ausgelöst.
Der ItemPath
Parameter darf nicht NULL oder leer sein oder die folgenden reservierten Zeichen enthalten: : ? ; @ & = + $ , \ * > < | . "
. Sie können den Schrägstrich (/) verwenden, um Elemente im vollständigen Pfadnamen des Ordners zu trennen, aber sie können es nicht am Ende des Ordnernamens verwenden.
Sie können die GetExtensionSettings -Methode verwenden, um eine Liste der erforderlichen Einstellungen für eine Übermittlungserweiterung abzurufen. Sie müssen Werte für diese erforderlichen Einstellungen im ExtensionSettings
Parameter übergeben. Informationen zu E-Mail-Übermittlungseinstellungen finden Sie unter Reporting Services Übermittlungserweiterungseinstellungen.
Der DataRetrievalPlan
-Parameter nimmt ein DataRetrievalPlan -Objekt als Argument an. Das DataRetrievalPlan Objekt enthält ein Dataset mit einer Übermittlungsabfrage. Die CommandType -Eigenschaft der Übermittlungsabfrage (QueryDefinition -Objekt) ist für datengesteuerte Abonnements standardmäßig auf Text
festgelegt und muss nicht angegeben werden. Wenn Sie einen Wert für die CommandType -Eigenschaft angeben, muss der Wert sein Text
.
Die Datenquelle, die im Dataset für die Übermittlungsabfrage bereitgestellt oder referenziert wird, muss über die CredentialRetrieval Einstellung verfügen Store
.
Werte für Übermittlungserweiterungseinstellungen und -parameter können entweder auf statische Werte oder auf Feldverweise festgelegt werden. Wenn ein Feldverweis für die Übermittlungserweiterungseinstellung oder einen Parameter angegeben wird, ist der Wert der Einstellung oder des Parameters datengesteuert. Das Dataset mit der Übermittlungsabfrage verfügt über eine Reihe von Feldern (Field Objekte), die den Einstellungen der Übermittlungserweiterung (ExtensionParameter Objekte) und Berichtsparameterwerten (ParameterValue Objekte) zugeordnet sind. Alle Felder, auf die in Übermittlungserweiterungseinstellungen und Berichtsparameterwerten verwiesen wird, müssen den Feldern im Dataset entsprechen. Wenn die Übermittlungsabfrage kein Feld zurückgibt, das in einer Übermittlungserweiterungseinstellung oder einem Parameterwert angegeben ist, löst der Berichtsserver einen Fehler aus, wenn das Abonnement verarbeitet wird.
Der Wert des EventType
Parameters muss einem Ereignis entsprechen, das für den Berichtsserver konfiguriert ist. Die beiden Ereignisse, die zum Erstellen von Abonnements verwendet werden, sind TimedSubscription
und SnapshotUpdated
. Verwenden Sie die ListEvents -Methode, um eine Liste aller ereignisse zurückzugeben, die für den Berichtsserver konfiguriert sind.
Der Wert des MatchData
Parameters hängt vom Ereignistyp ab. Wenn es sich bei dem Ereignis um ein TimedSubscription
-Ereignis handelt, ist ein ScheduleDefinition -Objekt als MatchData
Parameter erforderlich. Sie müssen das ScheduleDefinition Objekt zuerst als XML serialisieren, um es als Zeichenfolgenwert zu übergeben, und ein Abonnement basierend auf dem Zeitplan erstellen. Die XML-Struktur könnte wie im folgenden Beispiel aussehen:
<ScheduleDefinition>
<WeeklyRecurrence>
<StartDateTime>2003-02-24T09:00:00-08:00</StartDateTime>
<WeeksInterval>1</WeeksInterval>
<DaysOfWeek>
<Monday>True</Monday>
</DaysOfWeek>
</WeeklyRecurrence>
</ScheduleDefinition>
Der Wert des StartDateTime Elements, wenn er als XML-Zeichenfolge übergeben wird, sollte dem Datumsformat ISO 8601 entsprechen. Dieser internationale Datums- und Uhrzeitstandard ist das erweiterte Format CCJJ-MM-TTThh:mm:ss+/-Z, wobei "CC" das Jahrhundert, "JJ" das Jahr, "MM" den Monat und "TT" den Tag darstellt. Der Buchstabe "T" ist das Datums- und Uhrzeittrennzeichen, und "hh", "mm", "ss" stellen Stunde, Minute und Sekunde dar. Dieser Darstellung kann unmittelbar ein "Z" folgen, um die koordinierte Weltzeit (UTC) anzugeben. Um die Zeitzone anzugeben, die als Differenz zwischen der lokalen Zeit und der koordinierten Weltzeit dargestellt wird, wird "Z" ein "+"- oder "-"-Zeichen vorangestellt, gefolgt von der Differenz von UTC, die als hh:mm dargestellt wird.
Wenn die Zeitplandefinition für einen TimedSubscription
einen freigegebenen Zeitplan ist, müssen Sie die Zeitplan-ID des freigegebenen Zeitplans MatchData
als Parameter übergeben. Die Zeitplan-ID wird beispielsweise als String
"4608ac1b-fc75-4149-9e15-5a8b5781b843" übergeben. Die Zeitplan-ID kann durch Aufrufen der ListSchedules -Methode abgerufen werden.
Sie können die XmlSerializer
-Klasse verwenden, um Ihre Objektklasse automatisch in eine XML-Zeichenfolge zu konvertieren. Weitere Informationen zur XmlSerializer
-Klasse finden Sie unter "System.Xml. XmlSerializer-Klasse" in der Microsoft .NET Framework-Dokumentation.
Wenn es sich bei dem Ereignis um ein SnapshotUpdated
Abonnement handelt, sollte der Wert von MatchData
(oder Nothing
in Visual Basic) sein null
.
Mit dieser Methode wird die LastExecutedSpecified -Eigenschaft des Abonnements auf false
, die Status -Eigenschaft des Abonnements auf new subscription
und alle Eigenschaften des Abonnementobjekts Activeauf false
festgelegt. Die ModifiedBy Eigenschaften und ModifiedDate des Elements werden ebenfalls aktualisiert.