Репликация сервера SQL - получить последнюю дату синхронизации из запроса - PullRequest
1 голос
/ 18 декабря 2008

Кто-нибудь знает запрос на последнюю дату синхронизации с SQL Server (2008).

Это та же информация, что и в мониторе репликации, но я хочу получить эту дату из запроса.

Ответы [ 3 ]

3 голосов
/ 04 января 2012

Я создал такое представление, чтобы подписчик получал последнюю дату

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
2 голосов
/ 18 декабря 2008

Вы можете увидеть много информации о сессиях слияния, используя системную таблицу msMerge_sessions:

select * from msMerge_sessions

В зависимости от необходимой вам информации, используйте другие системные таблицы, доступные в вашей базе данных.

0 голосов
/ 07 февраля 2018

для ответа № 3

Великолепное усилие, но есть некоторая модификация Для просмотра возможности запуска Query

---- Создать представление LastSync как показано ниже

Create View LastSync As 
select subscriber_name, max(start_time) as last_sync, ID, creation_date
from msMerge_sessions inner join msMerge_agents 
   on msmerge_agents.id = msmerge_sessions.agent_id 
group by subscriber_name, ID, creation_date
Go

---- Выполнить ниже запроса

ВЫБРАТЬ 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 valu_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) КОГДА 1 ТО «НАЧИНАЕТСЯ», КОГДА 2 «ПОТОМ» добивается успеха, КОГДА 3 ТО «В ПРОЦЕССЕ» КОГДА 4 ТО «ПРОСТОЙ», КОГДА 5 ТО «ПОВТОР», КОГДА 6 ПОСЛЕ «НЕИСПРАВНО» Статус FROM distribution.dbo.MSmerge_sessions ВНУТРЕННЕЕ СОЕДИНЕНИЕ dbo.LastSync ON dbo.LastSync.id = distribution.dbo.MSmerge_sessions.agent_id AND distribution.dbo.MSmerge_sessions.start_time = dbo.LastSync.last_sync

- Удачи

...