ReportingService2010.CreateDataDrivenSubscription Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Membuat langganan berbasis data untuk item tertentu. Metode ini berlaku untuk Report
jenis item.
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
URL item yang sepenuhnya memenuhi syarat untuk membuat langganan berbasis data, termasuk nama file dan, dalam mode SharePoint, ekstensi.
- ExtensionSettings
- ExtensionSettings
Objek ExtensionSettings yang berisi daftar pengaturan yang khusus untuk ekstensi pengiriman.
- DataRetrievalPlan
- DataRetrievalPlan
Objek DataRetrievalPlan yang menyediakan pengaturan yang diperlukan untuk mengambil data dari kueri pengiriman. Objek DataRetrievalPlan berisi referensi ke DataSetDefinition objek dan DataSourceDefinitionOrReference objek.
- Description
- String
Deskripsi yang bermakna yang ditampilkan kepada pengguna.
- EventType
- String
Jenis peristiwa yang memicu langganan berbasis data. Nilai yang valid adalah TimedSubscription
atau SnapshotUpdated
.
- MatchData
- String
Data yang terkait dengan parameter yang ditentukan EventType
. Parameter ini digunakan oleh peristiwa untuk mencocokkan langganan berbasis data dengan peristiwa yang telah diaktifkan.
- Parameters
- ParameterValueOrFieldReference[]
Array ParameterValueOrFieldReference objek yang berisi daftar parameter untuk item.
Mengembalikan
Nilai String
yang berisi ID langganan yang secara unik mengidentifikasi langganan berbasis data di database server laporan atau pustaka SharePoint.
- Atribut
Contoh
Untuk mengkompilasi contoh kode ini, Anda harus mereferensikan Reporting Services WSDL dan mengimpor namespace tertentu. Untuk informasi selengkapnya, lihat Mengkompilasi dan Menjalankan Contoh Kode. Contoh kode berikut menggunakan CreateDataDrivenSubscription untuk menambahkan langganan berbasis data baru ke database server laporan:
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());
}
}
}
Keterangan
Tabel di bawah ini memperlihatkan informasi header dan izin pada operasi ini.
Penggunaan Header SOAP | (Dalam) TrustedUserHeaderValue (Keluar) ServerInfoHeaderValue |
Izin Yang Diperlukan Mode Asli | ExecuteAndView DAN CreateAnySubscription |
Izin yang Diperlukan Mode SharePoint | <xref:Microsoft.SharePoint.SPBasePermissions.ViewListItems> DAN <xref:Microsoft.SharePoint.SPBasePermissions.ManageAlerts> |
Panjang ItemPath
parameter tidak boleh melebihi 260 karakter; jika tidak, pengecualian SOAP dilemparkan dengan kode kesalahan rsItemLengthExceeded.
Parameter ItemPath
tidak boleh null atau kosong atau berisi karakter khusus berikut: : ? ; @ & = + $ , \ * > < | . "
. Anda dapat menggunakan karakter garis miring (/) untuk memisahkan item dalam nama jalur lengkap folder, tetapi Anda tidak dapat menggunakannya di akhir nama folder.
Anda dapat menggunakan GetExtensionSettings metode untuk mengambil daftar pengaturan yang diperlukan untuk ekstensi pengiriman. Anda harus meneruskan nilai untuk pengaturan yang diperlukan ini ExtensionSettings
dalam parameter . Untuk informasi tentang pengaturan pengiriman email, lihat Pengaturan Ekstensi Pengiriman Reporting Services.
Parameter DataRetrievalPlan
mengambil DataRetrievalPlan objek sebagai argumennya. Objek berisi himpunan DataRetrievalPlan data dengan kueri pengiriman. Properti CommandType kueri pengiriman (QueryDefinition objek) diatur ke Text
secara default untuk langganan berbasis data dan tidak harus ditentukan. Jika Anda menentukan nilai untuk CommandType properti , nilainya harus Text
.
Sumber data yang disediakan atau dirujuk dalam himpunan data untuk kueri pengiriman harus memiliki CredentialRetrieval pengaturan Store
.
Nilai untuk pengaturan dan parameter ekstensi pengiriman dapat diatur ke nilai statis atau ke referensi bidang. Saat referensi bidang ditentukan untuk pengaturan ekstensi pengiriman atau parameter, nilai pengaturan atau parameter didorong oleh data. Himpunan data dengan kueri pengiriman memiliki sekumpulan bidang (Field objek) yang dipetakan ke pengaturan ekstensi pengiriman (ExtensionParameter objek) dan nilai parameter laporan (ParameterValue objek). Semua bidang yang dirujuk dalam pengaturan ekstensi pengiriman dan nilai parameter laporan harus sesuai dengan bidang dalam himpunan data. Jika kueri pengiriman tidak mengembalikan bidang yang ditentukan dalam pengaturan ekstensi pengiriman atau nilai parameter, server laporan menimbulkan kesalahan saat langganan diproses.
Nilai EventType
parameter harus sesuai dengan peristiwa yang dikonfigurasi untuk server laporan. Dua peristiwa yang digunakan untuk membuat langganan adalah TimedSubscription
dan SnapshotUpdated
. ListEvents Gunakan metode untuk mengembalikan daftar semua peristiwa yang dikonfigurasi untuk server laporan.
Nilai MatchData
parameter tergantung pada jenis peristiwa. Jika peristiwa adalah TimedSubscription
peristiwa, ScheduleDefinition objek diperlukan sebagai MatchData
parameter . Anda harus terlebih dahulu membuat serialisasi ScheduleDefinition objek sebagai XML untuk meneruskannya sebagai nilai string dan membuat langganan berdasarkan jadwal. Struktur XML mungkin terlihat seperti yang ada dalam contoh berikut:
<ScheduleDefinition>
<WeeklyRecurrence>
<StartDateTime>2003-02-24T09:00:00-08:00</StartDateTime>
<WeeksInterval>1</WeeksInterval>
<DaysOfWeek>
<Monday>True</Monday>
</DaysOfWeek>
</WeeklyRecurrence>
</ScheduleDefinition>
Nilai StartDateTime elemen saat diteruskan sebagai string XML harus sesuai dengan format tanggal ISO 8601. Standar tanggal dan waktu internasional ini adalah format diperpanjang CCYY-MM-DDThh:mm:ss+/-Z di mana "CC" mewakili abad, "YY" tahun, "MM" bulan dan "DD" hari itu. Huruf "T" adalah pemisah tanggal dan waktu dan masing-masing "hh", "mm", "ss" mewakili jam, menit, dan detik. Representasi ini dapat segera diikuti oleh "Z" untuk menunjukkan Waktu Universal Terkoordinasi (UTC). Untuk menunjukkan zona waktu, direpresentasikan sebagai perbedaan antara waktu setempat dan Waktu Universal Terkoordinasi, "Z" didahului oleh tanda "+" atau "-", diikuti oleh perbedaan dari UTC yang diwakili sebagai hh:mm.
Jika definisi jadwal untuk adalah TimedSubscription
jadwal bersama, Anda harus meneruskan ID jadwal jadwal bersama sebagai MatchData
parameter . ID jadwal diteruskan sebagai String
, misalnya, "4608ac1b-fc75-4149-9e15-5a8b5781b843". ID jadwal dapat diperoleh dengan memanggil ListSchedules metode .
Anda dapat menggunakan XmlSerializer
kelas untuk mengonversi kelas objek Anda menjadi string XML secara otomatis. Untuk informasi selengkapnya tentang XmlSerializer
kelas , lihat "System.Xml. Kelas XmlSerializer" dalam dokumentasi Microsoft .NET Framework.
Jika acara adalah SnapshotUpdated
langganan, nilainya MatchData
harus null
(atau Nothing
di Visual Basic).
Menggunakan metode ini mengatur LastExecutedSpecified properti langganan ke false
, Status properti langganan ke new subscription
, dan semua properti objek langganan Activeke false
. Properti ModifiedBy dan ModifiedDate item juga diperbarui.