Поделиться через


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, содержащий список параметров для элемента.

Возвращаемое значение

Значение типа String, содержащее идентификатор подписки, который однозначно определяет управляемую данными подписку в базе данных сервера отчетов или библиотеке SharePoint.

Атрибуты

Примеры

Чтобы скомпилировать этот пример кода, необходимо сослаться на 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
Необходимые разрешения в собственном режиме ExecuteAndView И CreateAnySubscription
Необходимые разрешения в режиме Интеграции с SharePoint <xref:Microsoft.SharePoint.SPBasePermissions.ViewListItems> И <xref:Microsoft.SharePoint.SPBasePermissions.ManageAlerts>

Длина ItemPath параметра не может превышать 260 символов. В противном случае создается исключение SOAP с кодом ошибки rsItemLengthExceeded.

Параметр ItemPath не может быть пустым или пустым или содержать следующие зарезервированные символы: : ? ; @ & = + $ , \ * > < | . ". Символ косой черты (/) можно использовать для разделения элементов в полном пути к папке, но его нельзя использовать в конце имени папки.

Метод можно использовать GetExtensionSettings для получения списка обязательных параметров для модуля доставки. Необходимо передать значения для этих обязательных параметров в параметре ExtensionSettings . Сведения о параметрах доставки электронной почты см. в разделе Параметры модуля доставки Reporting Services.

Параметр DataRetrievalPlan принимает объект в DataRetrievalPlan качестве аргумента. Объект DataRetrievalPlan содержит набор данных с запросом доставки. Для CommandType управляемых данными подписок свойство запроса на доставку (QueryDefinition объект) имеет Text значение по умолчанию, и его не нужно указывать. Если указать значение для CommandType свойства, оно должно иметь значение Text.

Источник данных, предоставленный или указанный в наборе данных для запроса доставки, должен иметь CredentialRetrieval значение Store.

Для параметров модуля доставки можно задать статические значения или ссылки на поля. Если для параметра модуля доставки или параметра указана ссылка на поле, значение параметра является управляемым данными. Набор данных с запросом на доставку содержит набор полей (Field объектов), которые сопоставляются с параметрами модуля доставки (ExtensionParameter объекты) и значениями параметров отчета (ParameterValue объекты). Все поля, на которые ссылается модуль доставки, и значения параметров отчета должны соответствовать полям в наборе данных. Если запрос доставки не возвращает поле, указанное в параметре модуля доставки или значении параметра, сервер отчетов вызывает ошибку при обработке подписки.

Значение EventType параметра должно соответствовать событию, настроенному для сервера отчетов. Два события, которые используются для создания подписок, — это TimedSubscription и SnapshotUpdated. Используйте метод , 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>  

Значение элемента при StartDateTime передаче в виде XML-строки должно соответствовать формату даты ISO 8601. Этот международный стандарт даты и времени является расширенным форматом CCYY-MM-DDThh:mm:ss+/-Z, где "CC" обозначает век, "ГГ" год, "ММ" месяц и "ДД" день. Буква "T" — это разделитель даты и времени, а "чч", "мм", "сс" — часы, минуты и секунды соответственно. За этим представлением может следовать буква "Z", обозначающее время в формате UTC. Чтобы указать часовой пояс, представленный как разница между местным временем и универсальным временем в режиме координирования, "Z" предшествует знак "+" или "-", за которым следует различие от UTC, представленное как чч:мм.

Если определение расписания для является общим расписанием TimedSubscription , необходимо передать идентификатор расписания общего расписания в MatchData качестве параметра. Идентификатор расписания передается как String, например , "4608ac1b-fc75-4149-9e15-5a8b5781b843". Идентификатор расписания можно получить, вызвав ListSchedules метод .

Класс можно использовать для автоматического XmlSerializer преобразования класса объекта в XML-строку. Дополнительные сведения о классе см. в XmlSerializer разделе "System.Xml. Класс XmlSerializer" в документации microsoft платформа .NET Framework.

Если событие является подпиской SnapshotUpdated , значение MatchData должно быть null равно (или Nothing в Visual Basic).

При использовании этого метода свойству LastExecutedSpecified подписки falseприсваивается значение , для Status свойства подписки — значение new subscription, а для всех свойств объекта подписки Active— значение false. Свойства ModifiedBy и ModifiedDate элемента также обновляются.

Применяется к