※2015年11月26日にバージョン8.5に合わせて改稿。
※バージョン9.0では引数が追加されているので、サンプルスクリプトの宣言部分をそれぞれ下記に変更しご利用ください。
——————————–
◇「Record_onAfterExecute」
Public Overrides Sub Record_onAfterExecute(recTarget As IRecord, Failed As Boolean, e As Exception, ByRef AbortRecord As Boolean,ByRef DisableReplication As Boolean)
◇「Record_onBeforeExecute」
Public Overrides Sub Record_onBeforeExecute(recTarget As IRecord, ByRef AbortRecord As Boolean, ByRef DisableReplication As Boolean)
——————————–
ミラーリングレプリケーションを行なう場合は、ターゲットテーブルのレプリケーション前のレコード数、それとも、レプリケーション後のレコード数をDBMotoログファイルに確認することができます。
レコード数をDBMotoログファイルに出力するには、下記の方法をご参照ください。
1) 該当するミラーリングレプリケーションを使用不可に設定する必要はあります。
2) レプリケーションを右クリックをして、「Replication Properties」を表示します。
3) 「Use Script」のチェックボックスをチェックをします。
4) 「Script…」ボタンを押下して、「Replication Script」エディターを表示します。
5)エディターの左下隅の3番目のボタンを押下して、「References」ダイアログを表示します。
「System.Data.dll」を入力して、「OK」ボタンを押下します。
6) 「Replication Script」エディターに下記のスクリプトを入れます。
——————————–
Imports Microsoft.VisualBasic
Imports DBMotoPublic
Imports DBMotoScript
Imports DBRS.GlobalScript
Imports System.Data
Imports System
Namespace DBRS
Public Class ReplicationScript : Inherits IReplicationScript
Dim conn as IDbConnection = Nothing
Dim cmd as IDbCommand = Nothing
Dim reader as IDataReader = Nothing
‘レプリケーション実行後のメソッド
Public Overrides Sub Record_onAfterExecute(recTarget As IRecord, Failed As Boolean)
Try
conn = TargetConnection
SyncLock(conn)
cmd = conn.CreateCommand
cmd.CommandText = “select count(*) from TEST_TBL”
reader = cmd.ExecuteReader
Dim iNumRecords = -1
If reader.Read Then
iNumRecords = reader.GetInt32(0)
End If
AddLog(“AfterExecute- RecordCount: ” & iNumRecords.ToString, 0)
End SyncLock
Catch ex As Exception
AddLog(“Exception in AfterExecute: ” & ex.ToString,0)
Finally
if (not reader is Nothing) Then
reader.Close
End If
if (not cmd is Nothing) Then
cmd.Dispose
End If
End Try
End Sub
‘レプリケーション実行前のメソッド
Public Overrides Sub Record_onBeforeExecute(recTarget As IRecord, ByRef AbortRecord As Boolean)
Try
conn = TargetConnection
SyncLock(conn)
cmd = conn.CreateCommand
cmd.CommandText = “select count(*) from TEST_TBL”
reader = cmd.ExecuteReader
Dim iNumRecords = -1
If reader.Read Then
iNumRecords = reader.GetInt32(0)
End If
AddLog(“BeforeExecute- RecordCount: ” & iNumRecords.ToString, 0)
End SyncLock
Catch ex As Exception
AddLog(“Exception in BeforeExecute: ” & ex.ToString,0)
Finally
if (not reader is Nothing) Then
reader.Close
End If
if (not cmd is Nothing) Then
cmd.Dispose
End If
End Try
End Sub
End Class
End Namespace
関連したトピックス
- ・レプリケーションの所要時間を計測する手法【リアルタイムレプリケーションツールDBMoto】
- [DBMoto]Oracle順序オブジェクト(シーケンス)のレプリケーションをスクリプトで実現
- 外部DLL(COM)の使用方法【リアルタイムレプリケーションツールDBMoto】
- [DBMoto]「未マッピング使用」機能によるマッピング外のデータを活用したレプリケーション
- 2つのソーステーブルからターゲットの一つのレコードにレプリケーション
- [Syniti(DBMoto)][スクリプト] 特定カラムの値が変更となった場合、ターゲットのレコードを削除するサンプルスクリプト
- [DBMoto][スクリプト]条件付きレプリケーションを行うサンプルVBスクリプト
- Syniti Data Replication (旧DBMoto)でのスクリプトの書き方③:グローバルスクリプト用の関数とイベント
- [Syniti(旧DBMoto)]レコード競合(コンフリクト)発生時のレコード内容を出力する方法
- Syniti Data Replication (旧DBMoto)でのスクリプトの書き方④:レプリケーションスクリプト