sp_addscriptexec (Transact-SQL)
SQL スクリプト (.sql file) をパブリケーションのすべてのサブスクライバにポストします。このストアド プロシージャは、パブリッシャ側でパブリケーション データベースについて実行されます。
構文
sp_addscriptexec [ @publication = ] publication
[ , [ @scriptfile = ] 'scriptfile' ]
[ , [ @skiperror = ] 'skiperror' ]
[ , [ @publisher = ] 'publisher' ]
引数
- [ @publication= ] 'publication'
パブリケーションの名前を指定します。publication のデータ型は sysname で、既定値はありません。
- [ @scriptfile= ] 'scriptfile'
SQL スクリプト ファイルへのフル パスを指定します。scriptfile のデータ型は nvarchar(4000) で、既定値はありません。
[ @skiperror= ] 'skiperror'
スクリプト処理の最中にエラーが発生したときに、ディストリビューション エージェントまたはマージ エージェントを停止させる必要があるかどうかを示します。SkipError のデータ型は bit で、既定値は 0 です。0 = エージェントは停止します。
1 = エージェントはスクリプトを続行し、エラーを無視します。
[ @publisher= ] 'publisher'
Microsoft SQL Server 以外のパブリッシャを指定します。publisher のデータ型は sysname で、既定値は NULL です。メモ : SQL Server パブリッシャからパブリッシュする場合は、publisher は使用しないでください。
リターン コードの値
0 (成功) または 1 (失敗)
解説
sp_addscriptexec は、トランザクション レプリケーションおよびマージ レプリケーションで使用します。
sp_addscriptexec は、スナップショット レプリケーションでは使用しません。
sp_addscriptexec を使用するには、SQL Server サービス アカウントが、スナップショットの場所に対しては読み取りおよび書き込み権限を、スクリプトが格納されるすべての場所に対しては読み取り権限を、それぞれ持っていることが必要です。
sqlcmd utility はサブスクライバでスクリプトを実行するために使用され、スクリプトは、サブスクリプション データベースに接続する際にディストリビューション エージェントまたはマージ エージェントにより使用されるセキュリティ コンテキストで実行されます。以前のバージョンの SQL Server でエージェントが実行される場合は、sqlcmd ではなく osql utility が使用されます。
sp_addscriptexec は、サブスクライバにスクリプトを適用するときに便利です。sqlcmd を使用してスクリプトの内容をサブスクライバに適用します。ただし、サブスクライバ構成は異なることがあるので、パブリッシャにポストする前にテストしたスクリプトでも、サブスクライバでエラーが生じる可能性があります。skiperror により、ディストリビューション エージェントまたはマージ エージェントは、エラーを無視して続行することができます。sp_addscriptexec を実行する前に、sqlcmd を使用してスクリプトをテストしてください。
メモ : |
---|
スキップされたエラーは、参考情報として、引き続きエージェント履歴に記録されます。 |
スナップショット配信に FTP を使用してパブリケーションのスクリプト ファイルをポストするための、sp_addscriptexec の使用は、Microsoft SQL Server サブスクライバに対してのみサポートされます。
権限
sp_addscriptexec を実行できるのは、sysadmin 固定サーバー ロールまたは db_owner 固定データベース ロールのメンバだけです。
参照
関連項目
システム ストアド プロシージャ (Transact-SQL)
その他の技術情報
同期中にスクリプトを実行する方法 (レプリケーション Transact-SQL プログラミング)
データの同期