インスタンス構成ファイルでのパラメータの使用
XML のインスタンス構成ファイル (ICF) を使用して Notification Services のインスタンスを構成する場合は、パラメータを使用することによって、ICF のセキュリティおよび移植性を高め、ICF をより更新しやすくすることができます。また、ICF からアプリケーション定義ファイル (ADF) に値を渡すこともできます。
Notification Services のインスタンスをプログラムによって構成する場合、パラメータ オブジェクトはありません。インスタンス定義とアプリケーション定義の値を 1 か所で更新する場合は、変数を使用できます。
Notification Services パラメータ
Notification Services では、要素値の代わりにパラメータを使用できます。パラメータを使用すると、次のようなメリットがあります。
- 重要なデータを ICF と ADF に格納せずに済みます。インスタンスを作成または更新するときにだけ値を指定できます。
- パラメータ値を一度指定すれば複数の要素で使用できます。
- 変更する可能性がある値を 1 か所に配置することで、インスタンスとアプリケーションの更新が容易になります。
ICF や ADF では、置き換えられるパラメータが、%MyParam%
(パーセント文字で囲んだパラメータ名) という形式で表されます。パラメータの値を定義するときは、パラメータ名 (MyParam
) とパラメータの値 (MyServer
など) を指定します。
インスタンスを作成または更新すると、Notification Services によってパラメータ (%MyParam%
) が、指定した値 (MyServer
) に置き換えられます。
ICF では、パラメータの値を、ParameterDefaults 要素、nscontrol コマンド ライン、または SQL Server Management Studio のダイアログ (インスタンスの作成や更新のためのダイアログ) を使用して指定できます。ただし、SQL Server Management Studio で置き換えることができるパラメータは 1 レベルのみです。たとえば、パラメータ A がパラメータ B を参照できるのは、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>
インスタンスを作成または更新すると、ICF 内のそれぞれの %BaseDirPath%
が、Notification Services によって文字列 "C:\NS" に置き換えられます。これは、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>
インスタンスを作成すると、ADF 内のそれぞれの %ApplicationServer%
が、Notification Services によって値 Server01
に置き換えられます。
ADF のパラメータ値は、ADF の ParameterDefaults 要素で指定することもできます。
これらの置換方法は、必要に応じて組み合わせて使用できます。たとえば、%AppServer%
などのパラメータを ApplicationServer
値に使用した場合は、%AppServer%
の値をコマンド ラインで指定できます。
参照
概念
インスタンス名の指定
データベース システム名の指定
インスタンス データベースの定義
アプリケーションとインスタンスの関連付け
カスタム配信プロトコルの定義
配信チャネルの定義
引数の暗号化の構成
インスタンスのバージョンと履歴の指定
アプリケーション定義ファイル (ADF) でのパラメータの使用
その他の技術情報
Notification Services のインスタンスの構成
ParameterDefaults 要素 (ICF)
Parameters 要素 (ICF)
ParameterDefaults 要素 (ADF)
nscontrol ユーティリティ
Notification Services アプリケーションの定義