次の方法で共有


sp_copysubscription (Transact-SQL)

適用対象: SQL Server Azure SQL Managed Instance

プル サブスクリプションのサブスクリプション データベースをコピーしますが、プッシュ サブスクリプションはコピーしません。 単一ファイルのデータベースのみをコピーできます。 このストアド プロシージャは、サブスクリプション データベースのサブスクライバーで実行されます。

重要

この機能は、 SQL Serverの将来のバージョンで削除される予定です。 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。 パラメーター化されたフィルターを使用してパーティション分割されたマージ パブリケーションでは、パーティション スナップショットの新しい機能を使用することをお勧めします。この機能を使用すると、多数のサブスクリプションの初期化を簡単に実行できます。 詳しくは、「 パラメーター化されたフィルターを使用したパブリケーションのスナップショットの作成」をご覧ください。 パーティション分割されていないパブリケーションの場合は、バックアップを使用してサブスクリプションを初期化できます。 詳細については、「 スナップショットを使用しないトランザクション サブスクリプションの初期化を使用して、サブスクリプションを手動で初期化する方法について説明します。

Transact-SQL 構文表記規則

構文

sp_copysubscription
    [ @filename = ] N'filename'
    [ , [ @temp_dir = ] N'temp_dir' ]
    [ , [ @overwrite_existing_file = ] overwrite_existing_file ]
[ ; ]

引数

[ @filename = ] N'filename'

データ ファイル (.mdf) のコピーを保存する完全なパス (ファイル名を含む) を指定する文字列。 @filenamenvarchar(260)で、既定値はありません。

[ @temp_dir = ] N'temp_dir'

一時ファイルを含むディレクトリの名前。 @temp_dirnvarchar(260) で、既定値は NULL です。 NULL場合は、SQL Server の既定のデータ ディレクトリが使用されます。 このディレクトリは、すべてのサブスクライバー データベース ファイルを合わせたファイル サイズを格納できるだけの領域を備えている必要があります。

[ @overwrite_existing_file = ] overwrite_existing_file

@filenameで指定した同じ名前の既存のファイルを上書きするかどうかを指定する省略可能なブール型フラグ。 @overwrite_existing_filebit で、既定値は 0 です。

  • 1場合は、@filenameで指定されたファイルが存在する場合は上書きされます。
  • 0場合、ファイルが存在し、ファイルが上書きされない場合、ストアド プロシージャは失敗します。

リターン コードの値

0 (成功) または 1 (失敗)。

解説

sp_copysubscription は、サブスクライバーでスナップショットを適用する代わりに、サブスクリプション データベースをファイルにコピーするために、すべての種類のレプリケーションで使用されます。 プル サブスクリプションのみをサポートするようにデータベースを構成する必要があります。 適切なアクセス許可を持つユーザーは、サブスクリプション データベースのコピーを作成し、サブスクリプション ファイル (.msf) を電子メールで送信したり、コピーしたり、別のサブスクライバーに転送したりして、サブスクリプションとしてアタッチできます。

コピーするサブスクリプション データベースのサイズは、2 ギガバイト (GB) 未満である必要があります。

sp_copysubscription は、クライアント サブスクリプションを持つデータベースでのみサポートされており、データベースにサーバー サブスクリプションがある場合は実行できません。

アクセス許可

sysadmin固定サーバー ロールのメンバーのみがsp_copysubscriptionを実行できます。