共用方式為


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

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

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

Notification Services 參數

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

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

在 ICF 或 ADF 內,將取代的參數看起來如下:%MyParam%。這是用百分比字元括住的參數名稱。當您定義參數值時,您要指定名稱 (MyParam) 和參數值,如 MyServer

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

對於 ICF,您可以在 nscontrol 命令列提供 ParameterDefaults 元素中的參數值,也可以在用來建立或更新執行個體的 SQL Server Management Studio 對話方塊中提供參數值。不過,SQL Server Management Studio 只接受一個層級的參數替代。例如,只有在 B 參數本身並未參考另一個參數時,A 參數才能參考 B 參數。

在 ICF 中定義參數預設值

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

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

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

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

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

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

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

在建立和更新執行個體時,定義參數值

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

在這個範例中,您的傳遞通道需要使用者名稱和密碼。您不要將它們儲存在 ICF 中,因此,您使用參數:

<DeliveryChannel>
    <DeliveryChannelName>MyChannel</DeliveryChannelName>
    <ProtocolName>MyProtocol</ProtocolName>
    <Arguments>
        <Argument>
            <Name>UserName</Name>
            <Value>%User%</Value>
        </Argument>
        <Argument>
            <Name>Password</Name>
            <Value>%Pwd%</Value>
        </Argument>
    </Arguments>
</DeliveryChannel>

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

nscontrol create -in "C:\NS\InstanceConfig.xml" User=<userName>
    Pwd=<enterStrongPasswordHere>

如果您利用 SQL Server Management Studio 來建立或更新執行個體,您也可以提供這些參數值。

參數值優先順序

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

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

將參數傳給 ADF

在 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 的 ParameterDefaults 元素中,提供 ADF 的參數值。

您可以依照需要來結合這些替代方法。例如,如果您要針對 ApplicationServer 值來使用參數,例如 %AppServer%,您可以在命令列中提供 %AppServer% 的值。

請參閱

概念

指定執行個體名稱
指定資料庫系統名稱
定義執行個體資料庫
將應用程式與執行個體關聯
定義自訂傳遞通訊協定
定義傳遞通道
設定引數加密
指定執行個體版本及歷程記錄
使用應用程式定義檔案中的參數 (ADF)

其他資源

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

說明及資訊

取得 SQL Server 2005 協助