トランザクションレプリケーションのための協調バックアップを有効にする

適用対象:SQL Server

トランザクションレプリケーション用のデータベースを有効にすると、すべてのトランザクションを配布データベースに届ける前にバックアップしなければならないと指定できます。 また、配布データベースで協調バックアップを有効にすることで、出版データベースのトランザクションログが配布元に伝播されたトランザクションがバックアップされるまで切り詰められないようにすることも可能です。 詳細については、「 バックアップとスナップショットおよびトランザクションレプリケーションの戦略」を参照してください。

パブリッシャー データベースが可用性グループの一部である場合、ディストリビューション データベースで sync with backup option を使用することは互換性がなく、次のエラーが発生する可能性があります: The process could not execute 'sp_repldone/sp_replcounters' on 'machinename\instance', Possible inconsistent state in the distribution database, Get help: http://help/MSSQL_REPL20011 (Source: MSSQLServer, Error number: 18846)

トランザクションレプリケーションで公開されたデータベースの協調的なバックアップを可能にすること

  1. パブリッシャーで、SELECT DATABASEPROPERTYEX(DB_NAME(),'IsSyncWithBackup')DATABASEPROPERTYEX (Transact-SQL) 関数を使用すると、パブリケーション データベースの IsSyncWithBackup プロパティが返されます。 この関数が 1を返した場合、連携バックアップはパブリッシュされたデータベースに対して既に有効になっています。

  2. ステップ 1 の関数が 0 を返した場合、パブリッシャー側のパブリケーション データベースに対して sp_replicationdboption (Transact-SQL) を実行します。 @optnamesync with backupを指定し、 @valuetrueを指定します。

    sync with backup オプションを falseに変更すると、ログ リーダー エージェントが実行された後で、または一定の間隔で (ログ リーダー エージェントが継続的に実行されている場合)、パブリケーション データベースの切り捨てのポイントが更新されます。 最長間隔は、 –MessageInterval エージェント パラメーター (既定値は 30 秒) によって制御されます。

ディストリビューション データベースの連携バックアップを有効にするには

  1. ディストリビューターで、DATABASEPROPERTYEX (Transact-SQL) 関数を使用すると、ディストリビューション データベースの IsSyncWithBackup プロパティが返されます。 この関数が 1を返した場合、ディストリビューション データベースの連携バックアップは既に有効になっています。

  2. ステップ 1 の関数が 0 を返した場合、ディストリビューター側のディストリビューション データベースに対して sp_replicationdboption (Transact-SQL) を実行します。 @optnamesync with backup を指定し、 @valuetrueを指定します。

連携バックアップを無効にするには

  1. パブリッシャーのパブリケーション データベースで、またはディストリビューターのディストリビューション データベースで、sp_replicationdboption (Transact-SQL) を実行します。 @optnamesync with backup を指定し、 @valuefalseを指定します。

A. 現在のデータベースの IsSyncWithBackup プロパティを取得する

この例の場合、現在のデータベースの IsSyncWithBackup プロパティが返されます。

SELECT DATABASEPROPERTYEX(DB_NAME(),'IsSyncWithBackup')`

B. 特定のデータベースの IsSyncWithBackup プロパティを取得する

この例の場合、データベース IsSyncWithBackupNameOfDatabaseToCheck プロパティが返されます。

SELECT DATABASEPROPERTYEX('NameOfDatabaseToCheck','IsSyncWithBackup')`