次の方法で共有


sp_addscriptexec (Transact-SQL)

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

トピック リンク アイコンTransact-SQL 構文表記規則

構文

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'
    MicrosoftSQL 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 の使用は、MicrosoftSQL Server サブスクライバに対してのみサポートされます。

権限

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