ReportingService2010.CreateSubscription 方法

定義

在報表伺服器資料庫或 SharePoint 文件庫中,建立指定之項目的訂閱。 這個方法會套用至 Report 項目類型。

public:
 System::String ^ CreateSubscription(System::String ^ ItemPath, ReportService2010::ExtensionSettings ^ ExtensionSettings, System::String ^ Description, System::String ^ EventType, System::String ^ MatchData, cli::array <ReportService2010::ParameterValue ^> ^ Parameters);
[System.Web.Services.Protocols.SoapDocumentMethod("http://schemas.microsoft.com/sqlserver/reporting/2010/03/01/ReportServer/CreateSubscription", 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 CreateSubscription (string ItemPath, ReportService2010.ExtensionSettings ExtensionSettings, string Description, string EventType, string MatchData, ReportService2010.ParameterValue[] Parameters);
[<System.Web.Services.Protocols.SoapDocumentMethod("http://schemas.microsoft.com/sqlserver/reporting/2010/03/01/ReportServer/CreateSubscription", 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.CreateSubscription : string * ReportService2010.ExtensionSettings * string * string * string * ReportService2010.ParameterValue[] -> string
Public Function CreateSubscription (ItemPath As String, ExtensionSettings As ExtensionSettings, Description As String, EventType As String, MatchData As String, Parameters As ParameterValue()) As String

參數

ItemPath
String

項目的完整 URL,包括檔案名稱以及 SharePoint 模式中的延伸模組。

ExtensionSettings
ExtensionSettings

ExtensionSettings 物件,其中包含傳遞延伸模組專用的設定清單。

Description
String

對使用者顯示的有意義描述。

EventType
String

觸發訂閱的事件類型。 有效值為 TimedSubscriptionSnapshotUpdated

MatchData
String

與指定之 事件 類型參數相關聯的資料。 這個參數是由事件用來比對訂閱與已引發的事件。

Parameters
ParameterValue[]

ParameterValue 物件的陣列,其中包含項目的參數清單。

傳回

String

可唯一識別報表伺服器資料庫或 SharePoint 文件庫中之訂閱的訂閱識別碼。

屬性

範例

using System;  
using System.Collections.Generic;  
using System.IO;  
using System.Text;  
using System.Web;  
using System.Web.Services;  
using System.Web.Services.Protocols;  

class Sample  
{  
    static void Main(string[] args)  
    {  
        ReportingService2010 rs = new ReportingService2010();  
        rs.Url = "http://<Server Name>" +  
            "/_vti_bin/ReportServer/ReportService2010.asmx";  
        rs.Credentials =   
            System.Net.CredentialCache.DefaultCredentials;  

        string report = "http://<Server Name>" +  
            "/Docs/Documents/AdventureWorks Sample Reports" +  
            "/Sales Order Detail.rdl";  
        string desc = "Send to Document Library";  
        string eventType = "TimedSubscription";  
        string scheduleXml =  
           @"<ScheduleDefinition>" +  
            "   <StartDateTime>2003-02-24T09:00:00-08:00" +  
            "   </StartDateTime>" +  
            "   <WeeklyRecurrence>" +  
            "      <WeeksInterval>1</WeeksInterval>" +  
            "      <DaysOfWeek>" +  
            "         <Monday>True</Monday>" +  
            "      </DaysOfWeek>" +  
            "   </WeeklyRecurrence>" +  
            "</ScheduleDefinition>";  

        ParameterValue[] extensionParams = new ParameterValue[6];  

        extensionParams[0] = new ParameterValue();  
        extensionParams[0].Name = "RENDER_FORMAT";  
        extensionParams[0].Value = "EXCEL";  

        extensionParams[1] = new ParameterValue();  
        extensionParams[1].Name = "FILENAME";  
        extensionParams[1].Value = "Sales Order Detail";  

        extensionParams[2] = new ParameterValue();  
        extensionParams[2].Name = "FILEEXTN";  
        extensionParams[2].Value = "True";  

        extensionParams[3] = new ParameterValue();  
        extensionParams[3].Name = "PATH";  
        extensionParams[3].Value = "http://<Server Name>" +  
            "/Docs/Documents/AdventureWorks Sample Reports/";  

        extensionParams[4] = new ParameterValue();  
        extensionParams[4].Name = "WRITEMODE";  
        extensionParams[4].Value = "Overwrite";  

        extensionParams[5] = new ParameterValue();  
        extensionParams[5].Name = "AUTOCOPY";  
        extensionParams[5].Value = "False";  

        string matchData = scheduleXml;  
        ExtensionSettings extSettings = new ExtensionSettings();  
        extSettings.ParameterValues = extensionParams;  
        extSettings.Extension = "Report Server DocumentLibrary";  

        try  
        {  
            rs.CreateSubscription(report, extSettings, desc,   
                eventType, matchData, null);  
        }  

        catch (SoapException e)  
        {  
            Console.WriteLine(e.Detail.InnerXml.ToString());  
        }  
    }  
}  
Imports System  
Imports System.IO  
Imports System.Text  
Imports System.Web.Services  
Imports System.Web.Services.Protocols  

Class Sample  

    Public Shared Sub Main()  

        Dim rs As New ReportingService2010()  
        rs.Url = "http://<Server Name>" + _  
            "/_vti_bin/ReportServer/ReportService2010.asmx"  
        rs.Credentials = _  
            System.Net.CredentialCache.DefaultCredentials  

        Dim report As String = "http://<Server Name>/Docs/" + _  
            "Documents/AdventureWorks Sample Reports/" + _  
            "Sales Order Detail.rdl"  
        Dim desc As String = "Send to Document Library"  
        Dim eventType As String = "TimedSubscription"  
        Dim scheduleXml As String = _  
            "<ScheduleDefinition>" + _  
            "   <StartDateTime>2003-02-24T09:00:00-08:00</StartDateTime>" + _  
            "   <WeeklyRecurrence>" + _  
            "      <WeeksInterval>1</WeeksInterval>" + _  
            "      <DaysOfWeek>" + _  
            "         <Monday>True</Monday>" + _  
            "      </DaysOfWeek>" + _  
            "   </WeeklyRecurrence>" + _  
            "</ScheduleDefinition>"  

        Dim extensionParams(6) As ParameterValue  

        extensionParams(0) = New ParameterValue()  
        extensionParams(0).Name = "RENDER_FORMAT"  
       extensionParams(0).Value = "EXCEL"  

        extensionParams(1) = New ParameterValue()  
        extensionParams(1).Name = "FILENAME"  
        extensionParams(1).Value = "Sales Order Detail"  

        extensionParams(2) = New ParameterValue()  
        extensionParams(2).Name = "FILEEXTN"  
        extensionParams(2).Value = "True"  

        extensionParams(3) = New ParameterValue()  
        extensionParams(3).Name = "PATH"  
        extensionParams(3).Value = "http://<Server Name>" + _  
            "/Docs/Documents/AdventureWorks Sample Reports/"  

        extensionParams(4) = New ParameterValue()  
        extensionParams(4).Name = "WRITEMODE"  
        extensionParams(4).Value = "Overwrite"  

        extensionParams(5) = New ParameterValue()  
        extensionParams(5).Name = "AUTOCOPY"  
        extensionParams(5).Value = "False"  

        Dim matchData As String = scheduleXml  
        Dim extSettings As New ExtensionSettings()  
        extSettings.ParameterValues = extensionParams  
        extSettings.Extension = "Report Server DocumentLibrary"  

        Try  
            rs.CreateSubscription(report, extSettings, desc, _  
                eventType, matchData, Nothing)  
        Catch e As SoapException  
            Console.WriteLine(e.Detail.InnerXml.ToString())  
        End Try  

   End Sub  

End Class  

備註

下表顯示標頭以及有關這項作業的權限資訊。

SOAP 標頭使用方式 (In) TrustedUserHeaderValue

(Out) ServerInfoHeaderValue
原生模式所需的許可權 ExecuteAndView 以及 (CreateAnySubscriptionCreateSubscription)
SharePoint 模式的必要許可權 ViewListItems 以及 (ManageAlertsCreateAlerts)

您可以使用 GetExtensionSettings 方法來取得傳遞延伸模組所需的設定清單。 您必須在參數中傳遞這些必要設定的值 ExtensionSettings 。 如需電子郵件傳遞設定的詳細資訊,請參閱 Reporting Services 傳遞延伸模組設定

參數的值 EventType 必須對應至針對報表伺服器所設定的事件。 用來建立訂閱的兩個事件為 TimedSubscriptionSnapshotUpdated 。 您 ListEvents 可以使用方法來傳回針對報表伺服器所設定之所有事件的清單。

參數的值 MatchData 取決於事件種類。 如果事件是 TimedSubscription 事件, ScheduleDefinition 則需要物件做為 MatchData 參數。 您必須先將 ScheduleDefinition 物件序列化為 XML,才能將它以字串值的形式傳遞,並根據排程建立訂用帳戶。 XML 結構可能類似于下列範例中的結構:

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

StartDateTime當元素作為 XML 字串傳遞時,該專案的值應該對應至日期格式 ISO 8601。 此國際日期和時間標準是延伸格式 CCYY-MM-DDTHH-MM-DDThh: MM: ss +/-Z,其中 "CC" 代表紀元 "YY" 年 "MM" 月份和 "DD" 天。 字母 "T" 是日期和時間分隔符號,而 "hh"、"mm"、"ss" 分別代表小時、分鐘和秒。 此標記法後面可以緊接著 "Z",以指出國際標準時間 (UTC) 。 若要指出時區(以本地時間和國際標準時間之間的差異表示),"Z" 的前面會加上 "+" 或 "-" 符號,後面接著以 hh: mm 表示的 UTC 時差。

如果 a 的排程定義 TimedSubscription 是共用排程,您必須傳遞共用排程的排程識別碼作為 MatchData 參數。 排程識別碼會傳遞為 String ,例如 "4608ac1b-fc75-4149-9e15-5a8b5781b843"。 您可以藉由呼叫方法來取得排程識別碼 ListSchedules

您可以使用 System.Xml.Serialization.XmlSerializer 類別,自動將物件類別轉換成 XML 字串。

如果事件是訂用帳戶 SnapshotUpdated ,的值 MatchData 應該是 null (或 Nothing Visual Basic) 。

使用這個方法時,它會將訂閱的屬性設定為、將訂閱的屬性設定為 LastExecutedSpecified false Status new subscription ,並將訂閱物件的所有屬性設 ActivefalseModifiedBy報表的和 ModifiedDate 屬性也會更新。

參數中指定的任何排程都 MatchData 必須位於相同的網站和 ItemPath

適用於