共用方式為


使用應用程式定義檔案中的參數 (ADF)

如果您在 XML 應用程式定義檔案 (ADF) 中定義 Notification Services 應用程式,您可以利用參數,使 ADF 更安全、更具可攜性,且更容易更新。您也可以從執行個體組態檔 (ICF),將值傳入 ADF 中。

如果您以程式設計的方式定義應用程式,便沒有參數物件。如果您需要用來更新應用程式值的單一位置,您可以使用變數。

Notification Services 參數

Notification Services 可讓您利用參數來取代元素值。使用參數比較好,原因如下:

  • 您可以將機密資料保存在應用程式定義之外,只在建立或更新應用程式時,才提供值。
  • 您只需要定義參數值一次,便可以在許多元素中使用它。
  • 您可以將可能變更的值放在單一位置,使執行個體和應用程式更容易更新。

在 ADF 內,將取代的參數看起來如下:%MyParam%。這是用百分比字元括住的參數名稱,類似於環境變數。當您定義參數值時,您要指定名稱 (MyParam) 和參數值,如 MyServer。如同環境變數,參數名稱也不區分大小寫。

當您建立或更新應用程式時,Notification Services 會用您指定的值 (MyServer) 來取代參數 (%MyParam%)。

對於 ADF,您可以在 ADF 的 ParameterDefaults 元素中提供參數值,也可以在 ICF 的 Application 區段中定義參數名稱和值,將值從 ICF 傳給應用程式。

ms166503.note(zh-tw,SQL.90).gif重要事項:
如果您在 ADF 或 ICF 中使用參數,但在建立或更新執行個體時,並未提供參數值,建立或更新程序便會失敗。

在 ADF 中定義參數預設值

您可以在 ADF 的 ParameterDefaults 元素中,提供 ADF 參數的值。Notification Services 會從這個元素中讀取參數名稱和值,再用指定的值來取代對應的參數。

例如,您可以用一個參數來代表多個元素共用的檔案路徑。您可以將這個參數命名為 BaseDirPath,並在 ADF 中建立下列元素:

<BaseDirectoryPath>%BaseDirPath%\Stock</BaseDirectoryPath>
...
<AssemblyName>%BaseDirPath%\MyContentFormatter.dll</AssemblyName>

之後,您可以依照下列方式來提供 %BaseDirPath% 值:

<ParameterDefaults>
    <Parameter>
        <Name>BaseDirPath</Name>
        <Value>C:\NS</Value>
    </Parameter>
</ParameterDefaults>

當您建立或更新執行個體時,Notification Services 會用 "C:\NS" 字串來取代 ADF 中所出現的每個 %BaseDirPath%。在邏輯上,這與在 ADF 中使用下列元素相同:

<BaseDirectoryPath>C:\NS\Stock</BaseDirectoryPath>
...
<AssemblyName>C:\NS\SMS.dll</AssemblyName>

從 ICF 傳遞參數

在 ICF 內,您利用 Application 元素來描述執行個體主控的應用程式。Application 元素有一個 Parameters 子元素。您可以利用這個子元素來定義 ADF 的參數值。

例如,在 ADF 中,您必須定義哪些伺服器執行主控的事件提供者、產生器和散發者。您利用 ADF 中的 SystemName 元素來執行這個動作。如果您在單一伺服器中執行所有這些元件,且您要在建立執行個體時定義伺服器名稱,您可以在 ADF 中使用參數:

<HostedProvider>
    ...
    <SystemName>%ApplicationServer%</SystemName>
    ...
    <Generator>
        <SystemName>%ApplicationServer%</SystemName>
    ...
    <Distributor>
        <SystemName>%ApplicationServer%</SystemName>
    ...

之後,您可以在 ICF 的 Application 元素中,定義這個參數的值:

<Application>
    ...
    <Parameters>
        <Parameter>
            <Name>ApplicationServer</Name>
            <Value>Server01</Value>
        </Parameter>
    </Parameters>
</Application>

當您建立執行個體時,Notification Services 會用 "Server01" 值來取代 ADF 中所出現的每個 %ApplicationServer%

在編譯執行個體時傳遞參數

如果您要將參數值保存在 ADF 和 ICF 之外,您可以在建立或更新執行個體時,或在環境變數中,提供這些值。例如,如果您利用 nscontrol 命令提示字元公用程式,來建立 Notification Services 執行個體,您可以在命令列中提供使用者名稱和密碼值。

若要將這些值傳給 ADF,您必須在 ICF 的 Application 區段中使用這些參數。在上述範例中,我們不需要在 ICF 中定義應用程式伺服器,我們可以依照這個程式碼所示來使用 %Server% 參數:

<Application>
    ...
    <Parameters>
        <Parameter>
            <Name>ApplicationServer</Name>
            <Value>%Server%</Value>
        </Parameter>
    </Parameters>
</Application>

之後,您可以在命令列中提供參數值:

nscontrol create -in "C:\NS\InstanceConfig.xml" Server=Server01

當您建立或更新執行個體時,Server01 會取代 ICF 中的 %Server%。之後,Server01 會取代 ADF 中所出現的每個 %ApplicationServer%

另外,您也可以在利用 SQL Server Management Studio 來建立和更新 Notification Services 執行個體時,將參數傳給 ADF。不過,SQL Server Management Studio 只接受一個層級的參數替代。例如,只有在 B 參數本身並未參考另一個參數時,A 參數才能參考 B 參數。

參數值優先順序

您有可能在 ParameterDefaults 區段中,在環境變數中,以及在建立或更新執行個體之時,定義相同參數的值。因此,參數值會有優先順序:

  • 建立或更新執行個體時所提供的參數值,優先順序最高,會覆寫環境變數中及 ParameterDefaults 區段中所提供的值。
  • 環境變數會覆寫 ParameterDefaults 值。
  • ParameterDefaults 值的優先權最低。

請參閱

概念

在執行個體組態檔中使用參數

其他資源

ParameterDefaults Element (ADF)
Parameter Element (ADF)
ParameterDefaults Element (ICF)
nscontrol 公用程式
定義 Notification Services 應用程式
設定 Notification Services 的執行個體

說明及資訊

取得 SQL Server 2005 協助