次の方法で共有


SQL レプリケーションのスナップショットの初期化オプションを変更する

この記事では、スナップショットを使用してサブスクリプションを初期化するときに、いくつかのオプションを変更する方法について説明します。

スナップショットの形式

[パブリケーションのプロパティ - <パブリケーション] ダイアログ ボックスの [スナップショット] ページで、スナップショット形式を>指定します。 このダイアログ ボックスへのアクセス方法の詳細については、「パブリケーション プロパティの表示および変更」を参照してください。

  1. [パブリケーションのプロパティ - <パブリケーション>] ダイアログ ボックスの [スナップショット] ページで、[ネイティブ SQL Server - パブリッシャーまたはサブスクライバーがSQL Serverを実行していない場合は、すべてのサブスクライバーが SQL Server または Character を実行しているサーバーである必要があります] を選択します。

    注意

    このパブリケーションでSQL Server Compact データベースまたは非SQL Server データベースのサブスクリプションをサポートする必要がある場合を除き、ネイティブ形式を選択することをお勧めします。

  2. [OK] をクリックします。

スナップショット フォルダーの場所

既定のスナップショットの場所

既定のスナップショットの場所の指定 (SQL Server Management Studio) ディストリビューションの構成ウィザードの [スナップショット フォルダー] ページで既定のスナップショットの場所を指定します。 ウィザードの使用の詳細については、「パブリッシングおよびディストリビューションの構成」を参照してください。 ディストリビューターとして構成されていないサーバーでパブリケーションを作成する場合は、パブリケーションの新規作成ウィザードの [スナップショット フォルダー] ページで既定のスナップショットの場所を指定します。 このウィザードの使用の詳細については、「パブリケーションの作成」を参照してください。

[ディストリビューターのプロパティ - <ディストリビューター>] ダイアログ ボックスの [パブリッシャー] ページで、既定のスナップショットの場所を変更します。 詳細については、「ディストリビューターとパブリッシャーのプロパティの表示および変更」を参照してください。 [パブリケーションのプロパティ - <パブリケーション] ダイアログ ボックスで、各パブリケーションの スナップショット フォルダーを>設定します。 詳しくは、「 View and Modify Publication Properties」をご覧ください。

既定のスナップショットの場所の変更

  1. [ディストリビューターのプロパティ - <ディストリビューター>] ダイアログ ボックスの [パブリッシャー] ページで、既定のスナップショット場所を変更するパブリッシャーのプロパティ ボタン (...) をクリックします。

  2. [ パブリッシャーのプロパティ - <パブリッシャー> ] ダイアログ ボックスで、[ 既定のスナップショット フォルダー] プロパティの値を入力します。

    注意

    スナップショット エージェントには、指定したディレクトリに対する書き込み権限が必要です。また、ディストリビューション エージェントまたはマージ エージェントには、読み取り権限が必要です。 プル サブスクリプションを使用する場合は、共有ディレクトリを UNC (汎用名前付け規則) パス (\\computername\snapshot など) で指定する必要があります。 詳細については、「Secure the Snapshot Folder」(スナップショット フォルダーのセキュリティ保護) をご覧ください。

  3. [OK] をクリックします。

代替スナップショット場所

[パブリケーションのプロパティ - <パブリケーション] ダイアログ ボックスの [スナップショット] ページで、別のスナップショット場所を>指定します。 このダイアログ ボックスへのアクセス方法の詳細については、「パブリケーション プロパティの表示および変更」を参照してください。

別のスナップショット場所を指定する

  1. [パブリケーションプロパティ - <パブリケーション] ダイアログ ボックスの [スナップショット] ページで、次の手順を>実行します。
    1. [ファイルを次のフォルダーに保存する] チェック ボックスをオンにし、 [参照] をクリックしてディレクトリに移動するか、スナップショット ファイルの格納先ディレクトリへのパスを入力します。

      注意

      スナップショット エージェントには、指定したディレクトリに対する書き込み権限が必要です。また、ディストリビューション エージェントまたはマージ エージェントには、読み取り権限が必要です。 プル サブスクリプションを使用する場合は、共有ディレクトリを UNC (汎用名前付け規則) パス (\\computername\snapshot など) で指定する必要があります。 詳細については、「Secure the Snapshot Folder」(スナップショット フォルダーのセキュリティ保護) をご覧ください。
      a. スナップショット ファイルを既定のフォルダーにも書き込む必要がない限り、 [ファイルを既定のフォルダーに保存する] チェック ボックスはオフにしてください。
      スナップショット ファイルを圧縮するには、 [スナップショット ファイルをこのフォルダーに圧縮] を選択します。 圧縮は通常、低帯域幅接続を使用する場合や、スナップショットの代替位置をリムーバブル メディア (CD-ROM など) にする場合に使用します。

  2. [OK] をクリックします。

スナップショット ファイルを圧縮する

[パブリケーションのプロパティ - <パブリケーション>] ダイアログ ボックスの [スナップショット] ページでファイルを圧縮する必要があることを指定します。 このダイアログ ボックスへのアクセス方法の詳細については、「パブリケーション プロパティの表示および変更」を参照してください。

  1. [パブリケーションプロパティ - <パブリケーション] ダイアログ ボックスの [スナップショット] ページで、次の手順を>実行します。

    1. [ファイルを次のフォルダーに保存する] チェック ボックスをオンにし、 [参照] をクリックしてディレクトリに移動するか、スナップショット ファイルの格納先ディレクトリへのパスを入力します。

      注意

      スナップショット エージェントには、指定したディレクトリに対する書き込み権限が必要です。また、ディストリビューション エージェントまたはマージ エージェントには、読み取り権限が必要です。 プル サブスクリプションを使用する場合は、共有ディレクトリを UNC (汎用名前付け規則) パス (\\computername\snapshot など) で指定する必要があります。 詳細については、「Secure the Snapshot Folder (スナップショット フォルダーのセキュリティ保護)」をご覧ください

    2. スナップショット ファイルを既定のフォルダーにも書き込む必要がない限り、 [ファイルを既定のフォルダーに保存する] チェック ボックスはオフにしてください。

      注意

      このチェック ボックスをオンにした場合、既定のフォルダーに格納されたファイルは圧縮されません。 圧縮されたファイルは、上記の手順で別途指定した場所にのみ格納できます。

  2. [スナップショット ファイルをこのフォルダーに圧縮] チェック ボックスをオンにします。

  3. [OK] をクリックします。

スナップショットが適用される前および後のスクリプトの実行

スナップショットが適用される前または後に、スクリプトを指定してサブスクライバーで実行できます。 スクリプトは、各サブスクライバーでのログインの作成やスキーマ (オブジェクト所有者) の作成など、さまざまな理由で使用できます。

各スクリプトに対してファイルの場所を指定すると、スナップショットの処理が行われるたびに、スナップショット エージェントはスクリプト ファイルを現在のスナップショット フォルダーにコピーします。 ディストリビューション エージェントまたはマージ エージェントは、スナップショットを適用するときに、レプリケートされたオブジェクト スクリプトの前にプリスナップショット スクリプトを実行します。 ディストリビューション エージェントまたはマージ エージェントは、他のすべてのレプリケートされたオブジェクト スクリプトおよびデータが適用された後にポストスナップショット スクリプトを実行します。 スナップショットの適用が完了し、スクリプト ファイルが正常に実行された後、スクリプト ファイルはサブスクライバー上の作業ディレクトリから削除されます。

スクリプトは、 sqlcmd ユーティリティを起動することで実行されます。 スクリプトを配置する前に、 sqlcmd を使用して実行し、想定どおりに実行されることを確認します。 スナップショットが適用される前後に実行されるスクリプトの内容は、繰り返し使用できる必要があります。 たとえば、スクリプト内でテーブルを作成する場合、最初にテーブルの存在を確認し、そのテーブルが存在する場合に適切な動作を行う必要があります。 既にスクリプトが適用されているサブスクリプションを再初期化する必要がある場合、スクリプトは繰り返し使用できる必要があります。再初期化中に新しいスナップショットを適用すると、そのスクリプトが再度適用されるためです。

スナップショット ファイルを圧縮し、 Microsoft CAB ファイル形式にする場合は、スクリプトも圧縮され、CAB ファイルに格納されます。 圧縮スナップショット ファイルがサブスクライバーに転送され、サブスクライバー上の作業ディレクトリで圧縮解除された後は、プリスナップショット スクリプトとして指定されたスクリプトが実行されます。 同じように、ポストスナップショット スクリプトは、スナップショット適用の最後のステップとしてサブスクライバーで解凍および実行されます。

スナップショットが適用される前または後にスクリプトを実行する

[パブリケーションのプロパティ - <パブリケーション>] ダイアログ ボックスの [スナップショット] ページで、スナップショットが適用される前または後に実行するオプションのスクリプトを指定します。 このダイアログ ボックスへのアクセス方法の詳細については、「パブリケーション プロパティの表示および変更」を参照してください。

  1. [パブリケーションプロパティ - <パブリケーション] ダイアログ ボックスの [スナップショット] ページで、次の手順を>実行します。
    • スナップショット適用前に実行するスクリプトを指定するには、 [参照] をクリックしてスクリプトに移動するか、 [スナップショットの適用前に以下のスクリプトを実行] ボックスにスクリプトへのパスを入力します。

      注意

      ディストリビューション エージェントまたはマージ エージェントは、指定するディレクトリに対し、読み取り権限を持つ必要があります。 プル サブスクリプションを使用する場合は、共有ディレクトリを UNC (汎用名前付け規則) パス (\\computername\scripts\myscript.sql など) で指定する必要があります。

    • スナップショット適用後に実行するスクリプトを指定するには、 [参照] をクリックしてスクリプトに移動するか、 [スナップショットの適用後に以下のスクリプトを実行] ボックスにスクリプトへの UNC パスを入力します。

  2. [OK] をクリックします。