다음을 통해 공유


ReportingService2010.CreateDataDrivenSubscription 메서드

정의

지정된 항목에 대한 데이터 기반 구독을 만듭니다. 이 메서드는 Report 항목 유형에 적용됩니다.

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

매개 변수

ItemPath
String

데이터 기반 구독을 만들 항목의 정규화된 URL이며 파일 이름과 SharePoint 모드에서는 확장명을 포함합니다.

ExtensionSettings
ExtensionSettings

배달 확장 프로그램에 고유한 설정 목록을 포함하는 ExtensionSettings 개체입니다.

DataRetrievalPlan
DataRetrievalPlan

배달 쿼리에서 데이터를 검색하는 데 필요한 설정을 제공하는 DataRetrievalPlan 개체입니다. DataRetrievalPlan 개체 및 DataSetDefinition 개체에 대한 참조를 포함하는 DataSourceDefinitionOrReference 개체입니다.

Description
String

사용자에게 표시되는 의미 있는 설명입니다.

EventType
String

데이터 기반 구독을 트리거하는 이벤트의 유형입니다. 유효한 값은 TimedSubscription 또는 SnapshotUpdated입니다.

MatchData
String

지정된 EventType 매개 변수와 연결된 데이터입니다. 이 매개 변수는 발생한 이벤트의 데이터 기반 구독과 일치하는 이벤트에서 사용합니다.

Parameters
ParameterValueOrFieldReference[]

항목에 대한 매개 변수 목록을 포함하는 ParameterValueOrFieldReference 개체의 배열입니다.

반환

보고서 서버 데이터베이스 또는 SharePoint 라이브러리의 데이터 기반 구독을 고유하게 식별하는 구독 ID를 포함하는 String 값입니다.

특성

예제

이 코드 예제를 컴파일하려면 Reporting Services WSDL을 참조하고 특정 네임스페이스를 가져와야 합니다. 자세한 내용은 코드 예제 컴파일 및 실행을 참조하세요. 다음 코드 예제에서는 를 사용하여 CreateDataDrivenSubscription 보고서 서버 데이터베이스에 새 데이터 기반 구독을 추가합니다.

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

설명

다음 표에서는 이 작업에 대한 헤더 및 사용 권한 정보를 보여 줍니다.

SOAP 헤더 사용 (In) TrustedUserHeaderValue

(Out) ServerInfoHeaderValue
기본 모드 필수 권한 ExecuteAndViewCreateAnySubscription
SharePoint 모드 필수 권한 <xref:Microsoft.SharePoint.SPBasePermissions.ViewListItems> 및 <xref:Microsoft.SharePoint.SPBasePermissions.ManageAlerts>

매개 변수의 ItemPath 길이는 260자를 초과할 수 없습니다. 그렇지 않으면 오류 코드 rsItemLengthExceeded와 함께 SOAP 예외가 throw됩니다.

매개 변수는 ItemPath null이거나 비어 있거나 예약된 문자를 : ? ; @ & = + $ , \ * > < | . "포함할 수 없습니다. 슬래시 문자(/)를 사용하여 폴더의 전체 경로 이름에 있는 항목을 구분할 수 있지만 폴더 이름 끝에는 사용할 수 없습니다.

메서드를 GetExtensionSettings 사용하여 배달 확장 프로그램에 필요한 설정 목록을 검색할 수 있습니다. 매개 변수에서 이러한 필수 설정에 ExtensionSettings 대한 값을 전달해야 합니다. 전자 메일 배달 설정에 대한 자세한 내용은 Reporting Services 배달 확장 프로그램 설정을 참조하세요.

매개 변수는 DataRetrievalPlan 개체를 DataRetrievalPlan 인수로 사용합니다. 개체에는 DataRetrievalPlan 배달 쿼리가 있는 데이터 세트가 포함되어 있습니다. 배달 쿼리(QueryDefinition개체)의 속성은 CommandType 기본적으로 데이터 기반 구독에 대해 로 설정 Text 되며 지정할 필요가 없습니다. 속성 값을 지정하는 경우 값 CommandType 은 이어야 Text합니다.

배달 쿼리에 대한 데이터 세트에서 제공되거나 참조되는 데이터 원본에는 설정StoreCredentialRetrieval 있어야 합니다.

배달 확장 설정 및 매개 변수에 대한 값을 정적 값 또는 필드 참조로 설정할 수 있습니다. 배달 확장 프로그램 설정 또는 매개 변수에 대해 필드 참조를 지정하면 설정 또는 매개 변수의 값이 데이터 기반이 됩니다. 배달 쿼리가 있는 데이터 세트에는 배달 확장 설정(개체) 및 보고서 매개 변수 값(FieldExtensionParameter 개체)에 매핑되는 필드 집합(개체)이ParameterValue 있습니다. 배달 확장 설정 및 보고서 매개 변수 값에서 참조되는 모든 필드는 데이터 세트의 필드에 해당해야 합니다. 배달 쿼리가 배달 확장 프로그램 설정 또는 매개 변수 값에 지정된 필드를 반환하지 않으면 구독이 처리될 때 보고서 서버에서 오류가 발생합니다.

매개 변수의 EventType 값은 보고서 서버에 대해 구성된 이벤트에 해당해야 합니다. 구독을 만드는 데 사용되는 두 이벤트는 및 SnapshotUpdated입니다TimedSubscription. 메서드를 ListEvents 사용하여 보고서 서버에 대해 구성된 모든 이벤트 목록을 반환합니다.

매개 변수의 MatchData 값은 이벤트 유형에 따라 달라집니다. 이벤트가 이벤트인 TimedSubscription 경우 개체가 ScheduleDefinition 매개 변수로 MatchData 필요합니다. 개체를 ScheduleDefinition 문자열 값으로 전달하고 일정에 따라 구독을 만들려면 먼저 개체를 XML로 직렬화해야 합니다. XML 구조체는 다음 예제의 구조와 같을 수 있습니다.

<ScheduleDefinition>  
   <WeeklyRecurrence>  
      <StartDateTime>2003-02-24T09:00:00-08:00</StartDateTime>  
      <WeeksInterval>1</WeeksInterval>  
      <DaysOfWeek>  
         <Monday>True</Monday>  
         </DaysOfWeek>  
   </WeeklyRecurrence>  
</ScheduleDefinition>  

XML 문자열로 전달될 때 요소의 StartDateTime 값은 ISO 8601 날짜 형식에 해당해야 합니다. 이 국제 날짜 및 시간 표준은 확장된 형식 CCYY-MM-DDThh:mm:ss+/-Z입니다. 여기서 "CC"는 세기, 연도 "YY", 월 "MM" 및 "DD"를 나타냅니다. 문자 "T"는 날짜 및 시간 구분 기호와 "hh", "mm", "ss"는 각각 시간, 분 및 초를 나타냅니다. 이 표현은 바로 뒤에 "Z"가 표시되어 UTC(협정 세계시)를 나타낼 수 있습니다. 현지 시간과 협정 세계시 사이의 차이로 표시되는 표준 시간대를 나타내기 위해 "Z"는 "+" 또는 "-" 기호 뒤에 hh:mm로 표시된 UTC와 차이가 잇습니다.

의 일정 정의 TimedSubscription 가 공유 일정인 경우 공유 일정의 일정 ID를 매개 변수로 MatchData 전달해야 합니다. 일정 ID는 "4608ac1b-fc75-4149-9e15-5a8b5781b843"으로 String전달됩니다. 메서드를 호출하여 일정 ID를 ListSchedules 가져올 수 있습니다.

클래스를 XmlSerializer 사용하여 개체 클래스를 XML 문자열로 자동으로 변환할 수 있습니다. 클래스에 XmlSerializer 대한 자세한 내용은 "System.Xml. Microsoft .NET Framework 설명서의 XmlSerializer 클래스"

이벤트가 구독인 SnapshotUpdated 경우 값 MatchData 은 (또는 Nothing Visual Basic에서) 이어야 null 합니다.

이 메서드를 LastExecutedSpecified 사용하면 구독의 속성을 로 Status 설정하고, 구독false의 속성을 로 설정하고, 구독 new subscription개체의 Active모든 속성을 로 false설정합니다. ModifiedBy 항목의 및 ModifiedDate 속성도 업데이트됩니다.

적용 대상