nscontrol update コマンド

更新 : 2005 年 12 月 5 日

SQL Server Notification Services の既存のインスタンスに対するインスタンス データベースおよびアプリケーション データベースを更新します。

構文

nscontrol update 
    [-nologo]
    [-help]
        -in configFile
    [-verbose] 
    [-force] 
    [-sqlusername sqlUserName -sqlpassword sqlPassword] 
    [-argumentkey key]
    [-timeout seconds]
    [param=value ...]

引数

  • -nologo
    nscontrol コマンドを実行するときに、製品とバージョンについてのメッセージを表示しないようにします。
  • -help
    コマンドの構文を表示します。
  • -inconfigFile
    インスタンスを定義するインスタンス構成ファイル (ICF) のパスとファイル名を指定します。ファイルが現在のディレクトリに存在する場合、パスは必要ありません。
  • -verbose
    ICF およびアプリケーション定義ファイル (ADF) で変更された情報が見つかった場合は、その情報をすべて表示します。このオプションは、デバッグを行う場合や、nscontrol update がどのような操作を実行するかを確認する場合に利用できます。
  • -force
    実行する操作を表示した後で、承認を求めずに nscontrol update を強制的に続行します。
  • -sqlusernamesqlUserName
    SQL Server への接続に使用される SQL Server ログインを指定します。

    ms162829.note(ja-jp,SQL.90).gif重要 :
    Windows 認証は、SQL Server 認証よりも安全性に優れています。できるだけ Windows 認証を使用してください。

    SQL Server 認証を使用して SQL Server に接続している場合、-sqlusername-sqlpassword の両方の引数を指定する必要があります。

    Microsoft Windows 認証を使用している場合は、-sqlusername 引数と -sqlpassword 引数は指定しないでください。

  • -sqlpasswordsqlPassword
    ‑sqlusername ログインに関連付けられているパスワードを指定します。SQL Server 認証を使用して接続する場合にのみパスワードを指定してください。
  • -argumentkeykey
    nscontrol register および nscontrol create で指定したものと同じキー値を指定します。ICF で EncryptArguments 値が true の場合、この引数は必須です。nscontrol update コマンドは引数値を解読し、キーが nscontrol create で指定したキーと同じかどうかを検証します。キー値が同じであれば、更新を続行します。インスタンスの作成後はキーを変更できません。
  • -timeout seconds
    インデックスの作成や削除など、各更新処理の完了に対するタイムアウトを指定します (秒単位)。既定のタイムアウトは 30 秒です。1 つの操作にかかる時間が 30 秒を超えると考えられる場合は、既定よりも大きいタイムアウト値を設定してください。
  • param=value
    コマンド プロンプトから構成ファイルにパラメータ値を渡す際に使用する名前と値の組を指定します。

    構成ファイルが置き換え可能なパラメータ (%DBSystem% など) を含んでいる場合、コマンド プロンプトでパラメータの名前と値を指定します。たとえば、構成ファイルが次の XML を含んでいるとします。

    <SqlServerSystem>%DBSystem%</SqlServerSystem>
    

    nscontrol update を使用して次のように名前と値を指定します。

    nscontrol create -in config.xml DBSystem=MySQLServer
    

    コマンド プロンプトで指定するパラメータ値は ICF のパラメータに適用されますが、ADF のパラメータには適用されません。パラメータ値を ADF に渡すには、Parameters サブセクションを構成ファイルの Application セクションに追加します。置き換え可能なパラメータをノード内の値として使用できます。コマンド プロンプトでは、これらのパラメータに対して値を設定することができます。

    また、コマンド プロンプトでパラメータを指定する以外にも、ICF で %COMPUTERNAME% などの環境変数を使用することもできます。ICF で環境変数を使用する場合、環境変数の名前と、コマンド プロンプトで指定する名前/値ペアの名前が同じ場合、コマンド プロンプトのほうが優先されることに注意してください。

解説

nscontrol update コマンドは、ICF および ADF の XML をデータベースと比較します。変更が有効である場合は、nscontrol update によって、XML ファイルで指定されたとおりにデータベースが更新されます。

ICF および ADF のすべての要素が更新できるわけではありません。これらのファイルの一部の要素には、インスタンスを削除して作成し直さないと変更できないオプションが指定されています。詳細については、「インスタンス構成ファイルのリファレンス」および「アプリケーション定義ファイルのリファレンス」を参照してください。各トピックには、フィールドの更新が可能かどうかを示す「更新」行が記載されています。

ms162829.note(ja-jp,SQL.90).gif重要 :
インスタンスを更新する前にインスタンス データベースおよびアプリケーション データベースのバックアップを行うことを強くお勧めします。これは、更新操作が完了前に失敗してしまう場合があるためです。この問題が発生すると、インスタンス データベースおよびアプリケーション データベースは、一貫性のない状態になってしまう場合があります。つまり、インスタンスおよびアプリケーションを操作できなくなり、データが失われてしまう可能性があります。
ms162829.note(ja-jp,SQL.90).gifメモ :
nscontrol update を実行する前にすべての ADF および ICF をチェックし、エラーの危険性を減らします。エラーが発生する場合は、ファイルを修正し、その後 nscontrol update を再実行します。

Notification Services Standard Edition を使用している場合、Standard Edition でサポートされていない ADF でオプションを指定すると、nscontrol update はインスタンスを更新せずに停止します。

ADF のサブスクリプション クラス メタデータを変更すると、nscontrol update は変更前のサブスクリプション データを保存するために、既存のサブスクリプション クラス テーブルの名前を NS<*subscription_class>*Subscriptions から NS<*subscription_class>*SubscriptionsOld に変更します。その後同じサブスクリプション クラスを更新する場合、nscontrol update がそのテーブルの名前を変更しようとするときに、NS<*subscription_class>*SubscriptionsOld が存在すると名前の変更に失敗します。詳細については、「アプリケーションの更新」を参照してください。

ADF でイベント クラスまたは通知クラスが変更される場合、nscontrol update はこれらのクラスの既存のテーブルを削除します。

nscontrol update コマンドは、通常、更新の実行中に、ICF および ADF に対して行われたすべての変更を表示します。ただし、そのインスタンスが引数の暗号化を使用している場合、nscontrol update は暗号化された引数を表示しません。

インスタンスを更新する前に、テーブル、ビュー、インデックス、またはその他の SQL Server オブジェクトを作成するコードを調べ、このコードが同じ名前のオブジェクトの存在をチェックし、存在する場合はこれらのオブジェクトを削除したり、名前を変更するかどうかを確認してください。nscontrol update は同じ名前を持つ既存のユーザー定義 SQL Server オブジェクトを自動的には削除または名前を変更しないので、この作業は重要になります。SQL Server オブジェクトを明示的に削除または名前を変更することにより、オブジェクトが重複するエラーを回避します。詳細については、「イベント記録テーブルの定義」を参照してください。

権限

nscontrol update の実行に使用するアカウント、または -sqlusername 引数で指定する SQL Server ログインは、nscontrol update コマンドの影響を受けるすべてのインスタンス データベースとアプリケーション データベースで db_owner データベース ロールのメンバになっているか、または sysadmin 固定サーバー ロールのメンバになっていることが必要です。

アカウントには Notification Services バイナリ ファイルを実行するための権限も必要です。この権限は、Windows の Administrators グループおよび SQLServerNotificationServicesUser グループのメンバに与えられます。

次の例では、インスタンスを更新する方法を示しています。

A. すべての相違点を表示するインスタンスの更新

次の例では、InstanceConfig.xml という名前の ICF を使用するインスタンスを更新します。nscontrol update コマンドは、更新された構成ファイルおよび ADF で見つかったすべての相違点を表示します。更新を続行する前に、yes または no と応答することが要求されます。

nscontrol コマンドは、Windows 認証を使用して SQL Server に接続します。

nscontrol update -in "C:\NS\Stock\InstanceConfig.xml" 
    -verbose

B. ICF がパラメータを含んでいる場合のインスタンスの更新

次の例では、インスタンスの更新時に、BaseDirectoryPath パラメータ、NSHost パラメータ、および SqlServer パラメータの値を指定します。nscontrol コマンドは、Windows 認証を使用して SQL Server に接続します。

nscontrol update -in "C:\NS\Stock\InstanceConfig.xml" 
    BaseDirectoryPath=C:\NS\Samples\Stock NSHost=nsuetest 
    SqlServer=nsuetest

C. 引数の暗号化を使用する場合のインスタンスの更新

次の例では、引数の暗号化を使用してインスタンスを更新します。nscontrol コマンドは、Windows 認証を使用して SQL Server に接続します。

nscontrol update -in "C:\NS\Stock\InstanceConfig.xml" 
    -argumentkey "MyArgumentKey"

D. プロンプトが表示されない更新の強制

次の例では、更新の承認を要求せずに、インスタンスを更新します。nscontrol コマンドは、Windows 認証を使用して SQL Server に接続します。

nscontrol update -in "C:\NS\Stock\InstanceConfig.xml" -force

E. SQL Server 認証を使用したインスタンスの更新

ms162829.note(ja-jp,SQL.90).gif重要 :
可能な場合は、Windows 認証を使用します。

次の例では、SQL Server への接続で SQL Server 認証を使用し、インスタンスを更新します。nscontrol update コマンドは、更新された構成ファイルおよび ADF で見つかったすべての相違点を表示します。更新を続行する前に、yes または no と応答することが要求されます。

nscontrol update -in "C:\NS\Stock\InstanceConfig.xml" 
    -sqlusername SqlUser -sqlpassword sQl-P@sWd

参照

関連項目

nscontrol ユーティリティ

その他の技術情報

インスタンスとアプリケーションの更新
EncryptArguments 要素 (ICF)

ヘルプおよび情報

SQL Server 2005 の参考資料の入手

変更履歴

リリース 履歴

2005 年 12 月 5 日

追加内容
  • Windows の SQLServerNotificationServicesUser グループに関する情報を追加。