1

SQLサーバー(2008年)からの最後の同期日付のクエリを知っている人はいますか。

レプリケーション モニターに表示される情報と同じですが、クエリからその日付を取得できるようにしたいと考えています。

4

3 に答える 3

3

サブスクライバーによる最後の日付を取得するために、このようなビューを作成しました

select subscriber_name, max(start_time) as last_sync 
from msMerge_sessions inner join msMerge_agents 
   on msmerge_agents.id = msmerge_sessions.agent_id 
group by subscriber_name

ビューを「LastSync」と呼びました。次に、このようにそのビューに参加して、レプリケーション モニターが示すものと同様の表現を取得しました。

SELECT     dbo.LastSync.id, dbo.LastSync.subscriber_name, dbo.LastSync.creation_date, dbo.LastSync.last_sync, 
                  distribution.dbo.MSmerge_sessions.estimated_upload_changes + distribution.dbo.MSmerge_sessions.estimated_download_changes AS estimate_rows, 
                  distribution.dbo.MSmerge_sessions.upload_inserts + distribution.dbo.MSmerge_sessions.upload_updates + distribution.dbo.MSmerge_sessions.upload_deletes + distribution.dbo.MSmerge_sessions.download_inserts
                   + distribution.dbo.MSmerge_sessions.download_updates + distribution.dbo.MSmerge_sessions.download_deletes AS actual_rows, 
                  distribution.dbo.MSmerge_sessions.duration AS total_seconds, distribution.dbo.MSmerge_sessions.percent_complete, 
                  distribution.dbo.MSmerge_sessions.delivery_rate, CASE (runstatus) 
                  WHEN 1 THEN 'Start' WHEN 2 THEN 'Succeed' WHEN 3 THEN 'In Progress' WHEN 4 THEN 'Idle' WHEN 5 THEN 'Retry' WHEN 6 THEN 'Fail' END AS Status
FROM         distribution.dbo.MSmerge_sessions INNER JOIN
                  dbo.LastSync ON dbo.LastSync.id = distribution.dbo.MSmerge_sessions.agent_id AND distribution.dbo.MSmerge_sessions.start_time = dbo.LastSync.last_sync
于 2012-01-04T18:38:22.270 に答える
2

システム テーブル msMerge_sessions を使用すると、マージ セッションに関する多くの情報を確認できます。

select * from msMerge_sessions

必要な情報に応じて、データベースで使用可能な他のシステム テーブルを使用します。

于 2008-12-18T11:05:32.370 に答える