次の方法で共有


sp_addscriptexec (Transact-SQL)

適用対象: SQL サーバー

Transact-SQL スクリプト (.sql ファイル) をパブリケーションのすべてのサブスクライバーに投稿します。 このストアド プロシージャは、パブリッシャー側のパブリケーション データベースで実行されます。

Transact-SQL 構文表記規則

構文

sp_addscriptexec
    [ @publication = ] N'publication'
    , [ @scriptfile = ] N'scriptfile'
    [ , [ @skiperror = ] skiperror ]
    [ , [ @publisher = ] N'publisher' ]
[ ; ]

引数

[ @publication = ] N'publication'

出版物の名前。 @publicationsysname で、既定値はありません。

[ @scriptfile = ] N'scriptfile'

SQL スクリプト ファイルへの完全なパス。 @scriptfilenvarchar(4000)で、既定値はありません。

[ @skiperror = ] skiperror

スクリプト処理中にエラーが発生したときに、ディストリビューション エージェントまたはマージ エージェントを停止するかどうかを示します。 @skiperrorbit で、既定値は 0 です。

  • 0 = エージェントが停止します。
  • 1 = エージェントはスクリプトを続行し、エラーを無視します。

[ @publisher = ] N'publisher'

SQL Server 以外のパブリッシャーを指定します。 @publishersysname で、既定値は NULL です。

SQL Server パブリッシャーから発行する場合、@publisher は使用しないでください。

リターン コードの値

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

解説

sp_addscriptexec は、トランザクション レプリケーションとマージ レプリケーションで使用されます。

sp_addscriptexec はスナップショット レプリケーションには使用されません。

sp_addscriptexecを使用するには、SQL Server サービス アカウントに、スナップショットの場所に対する読み取りと書き込みのアクセス許可と、スクリプトが格納されている場所に対する読み取りアクセス許可が必要です。

sqlcmd ユーティリティはサブスクライバーでスクリプトを実行するために使用され、サブスクリプション データベースに接続するときにディストリビューション エージェントまたはマージ エージェントによって使用されるセキュリティ コンテキストでスクリプトが実行されます。 エージェントを以前のバージョンの SQL Server で実行すると、sqlcmd ユーティリティの代わりに osql ユーティリティが使用。

sp_addscriptexec は、サブスクライバーにスクリプトを適用する場合に役立ち、 sqlcmd ユーティリティ を使用してスクリプトの内容をサブスクライバーに適用します。 ただし、サブスクライバーの構成は異なる可能性があるため、パブリッシャーに投稿する前にテストされたスクリプトによって、サブスクライバーでエラーが発生する可能性があります。 @skiperrorでは、エラーを無視して続行ディストリビューション エージェントまたはマージ エージェントできます。 sp_addscriptexecを実行する前にスクリプトをテストするにはsqlcmd ユーティリティを使用します。

Note

スキップされたエラーは引き続きエージェント履歴に記録され、参照用に記録されます。

スナップショット配信に FTP を使用してパブリケーションのスクリプト ファイルをポストする sp_addscriptexec の使用は、SQL Server サブスクライバーでのみサポートされます。

アクセス許可

sysadmin固定サーバー ロールまたは固定データベース ロールdb_ownerのメンバーのみがsp_addscriptexecを実行できます。