トランザクション レプリケーションの連携バックアップの有効化
適用対象: SQL Server
データベースでトランザクション レプリケーションを有効にする場合、ディストリビューション データベースに配布する前にすべてのトランザクションをバックアップするように指定できます。 また、ディストリビューション データベースの連携バックアップを有効にして、ディストリビューターに反映されたトランザクションがバックアップされるまで、パブリケーション データベースのトランザクション ログが切り捨てられないようにすることができます。 詳細については、「 スナップショット レプリケーションおよびトランザクション レプリケーションのバックアップと復元の方式」を参照してください。
Note
パブリッシャー データベースが可用性グループの一部であり、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)
というエラーが発生する可能性がある場合、ディストリビューション データベースで sync with backup オプションは使用できません。
トランザクション レプリケーションでパブリッシュされたデータベースの連携バックアップを有効にするには
パブリッシャーで、
SELECT DATABASEPROPERTYEX(DB_NAME(),'IsSyncWithBackup')
DATABASEPROPERTYEX (Transact-SQL) 関数を使用すると、パブリケーション データベースの IsSyncWithBackup プロパティが返されます。 この関数が 1を返した場合、連携バックアップはパブリッシュされたデータベースに対して既に有効になっています。ステップ 1 の関数が 0 を返した場合、パブリッシャー側のパブリケーション データベースに対して sp_replicationdboption (Transact-SQL) を実行します。 @optname に sync with backupを指定し、 @value に trueを指定します。
Note
sync with backup オプションを falseに変更すると、ログ リーダー エージェントが実行された後で、または一定の間隔で (ログ リーダー エージェントが継続的に実行されている場合)、パブリケーション データベースの切り捨てのポイントが更新されます。 最長間隔は、 –MessageInterval エージェント パラメーター (既定値は 30 秒) によって制御されます。
ディストリビューション データベースの連携バックアップを有効にするには
ディストリビューターで、DATABASEPROPERTYEX (Transact-SQL) 関数を使用すると、ディストリビューション データベースの IsSyncWithBackup プロパティが返されます。 この関数が 1を返した場合、ディストリビューション データベースの連携バックアップは既に有効になっています。
ステップ 1 の関数が 0 を返した場合、ディストリビューター側のディストリビューション データベースに対して sp_replicationdboption (Transact-SQL) を実行します。 @optname に sync with backup を指定し、 @value に trueを指定します。
連携バックアップを無効にするには
- パブリッシャーのパブリケーション データベースで、またはディストリビューターのディストリビューション データベースで、sp_replicationdboption (Transact-SQL) を実行します。 @optname に sync with backup を指定し、 @value に falseを指定します。
例
A. 現在のデータベースの IsSyncWithBackup
プロパティを取得する
この例の場合、現在のデータベースの IsSyncWithBackup
プロパティが返されます。
SELECT DATABASEPROPERTYEX(DB_NAME(),'IsSyncWithBackup')`
B. 特定のデータベースの IsSyncWithBackup
プロパティを取得する
この例の場合、データベース NameOfDatabaseToCheck
の IsSyncWithBackup
プロパティが返されます。
SELECT DATABASEPROPERTYEX('NameOfDatabaseToCheck','IsSyncWithBackup')`