次の方法で共有


アプリケーション定義ファイル (ADF) でのパラメータの使用

XML のアプリケーション定義ファイル (ADF) で Notification Services アプリケーションを定義する場合は、パラメータを使用することによって、ADF のセキュリティおよび移植性を高め、ADF をより更新しやすくすることができます。また、インスタンス構成ファイル (ICF) から ADF に値を渡すこともできます。

アプリケーションをプログラムによって定義する場合、パラメータ オブジェクトはありません。アプリケーションの値を 1 か所で更新する場合は、変数を使用できます。

Notification Services パラメータ

Notification Services では、要素値の代わりにパラメータを使用できます。パラメータを使用すると、次のようなメリットがあります。

  • 重要なデータをアプリケーション定義に格納せずに済みます。アプリケーションを作成または更新するときにだけ値を指定できます。
  • パラメータ値を一度指定すれば複数の要素で使用できます。
  • 変更する可能性がある値を 1 か所に配置することで、インスタンスとアプリケーションの更新が容易になります。

ADF では、置き換えられるパラメータが、%MyParam% という形式で表されます。このパーセント文字で囲まれた、環境変数に似た部分がパラメータ名です。パラメータの値を定義するときは、パラメータ名 (MyParam) とパラメータの値 (MyServer など) を指定します。環境変数と同様、パラメータ名では大文字と小文字は区別されません。

アプリケーションを作成または更新すると、Notification Services によってパラメータ (%MyParam%) が、指定した値 (MyServer) に置き換えられます。

ADF では、ADF の ParameterDefaults 要素でパラメータ値を指定できます。これにより、ICF の Application セクションでパラメータの名前と値を定義することによって、ICF からアプリケーションに値を渡すことができます。

ms166503.note(ja-jp,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>

インスタンスを作成または更新すると、ADF 内のそれぞれの %BaseDirPath% が、Notification Services によって文字列 "C:\NS" に置き換えられます。これは、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>

インスタンスを作成すると、ADF 内のそれぞれの %ApplicationServer% が、Notification Services によって値 Server01 に置き換えられます。

インスタンスのコンパイル時のパラメータの受け渡し

パラメータ値を 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

インスタンスを作成または更新すると、ICF 内の %Server% が値 Server01 に置き換えられます。その後、ADF 内のすべての %ApplicationServer% が Server01 に置き換えられます。

SQL Server Management Studio を使用して Notification Services のインスタンスを作成および更新する際に、ADF にパラメータを渡すこともできます。ただし、SQL Server Management Studio で置き換えることができるパラメータは 1 レベルのみです。たとえば、パラメータ A がパラメータ B を参照できるのは、B が別のパラメータを参照していない場合だけです。

パラメータ値の優先順位

ParameterDefaults セクション、環境変数、およびインスタンスの作成時や更新時に、それぞれ同じパラメータの値を定義することができます。このため、パラメータ値の間には、次のような優先順位があります。

  • インスタンスの作成時や更新時に指定されたパラメータ値は、最も優先順位が高く、環境変数や ParameterDefaults セクションに指定された値より優先されます。
  • 環境変数は、ParameterDefaults 値より優先されます。
  • 最も優先順位が低いのは ParameterDefaults 値です。

参照

概念

インスタンス構成ファイルでのパラメータの使用

その他の技術情報

ParameterDefaults 要素 (ADF)
Parameter 要素 (ADF)
ParameterDefaults 要素 (ICF)
nscontrol ユーティリティ
Notification Services アプリケーションの定義
Notification Services のインスタンスの構成

ヘルプおよび情報

SQL Server 2005 の参考資料の入手