Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Статистика реплицируемых команд  [new]
Roust_m
Member

Откуда: Сидней
Сообщений: 1102
Добрый день,

Мне нужно получить статистику по командам, которые сидят в данный момент в базе Distribution в следующем виде:
"Имя базы данных", "Имя таблицы", "Тип команды (INSERT, DELETE, UPDATE), Количество.

Как это лучше всего сделать?

Я пробовал запустить sp_browsereplcommands с выводом результатов во временную таблицу, чтобы потом эти данные сформатировать в нужном виде, но получается очень долго.

Есть другие варианты?

Спасибо.
13 сен 17, 08:17    [20791729]     Ответить | Цитировать Сообщить модератору
 Re: Статистика реплицируемых команд  [new]
invm
Member

Откуда: Москва
Сообщений: 9301
Команды, относящиеся к конкретной публикации в БД:
use distribution;

declare @publisher_db sysname = N'...', @publication sysname = N'...';

select
 d.publisher_db, p.publication, a.article, cast(c.command as nvarchar(4000)), c.*
from
 dbo.MSpublisher_databases d join
 dbo.MSrepl_commands c on c.publisher_database_id = d.id join
 dbo.MSarticles a on a.publisher_db = d.publisher_db and a.publisher_id = d.publisher_id and a.article_id = c.article_id join
 dbo.MSPublications p on p.publisher_id = d.publisher_id and p.publisher_db = d.publisher_db and p.publication_id = a.publication_id
where
 d.publisher_db = @publisher_db and
 p.publication = @publication and
 c.command_id = 1;

Получить нужный вам результат - дело техники.
13 сен 17, 12:22    [20792405]     Ответить | Цитировать Сообщить модератору
 Re: Статистика реплицируемых команд  [new]
Roust_m
Member

Откуда: Сидней
Сообщений: 1102
invm
Команды, относящиеся к конкретной публикации в БД:
use distribution;

declare @publisher_db sysname = N'...', @publication sysname = N'...';

select
 d.publisher_db, p.publication, a.article, cast(c.command as nvarchar(4000)), c.*
from
 dbo.MSpublisher_databases d join
 dbo.MSrepl_commands c on c.publisher_database_id = d.id join
 dbo.MSarticles a on a.publisher_db = d.publisher_db and a.publisher_id = d.publisher_id and a.article_id = c.article_id join
 dbo.MSPublications p on p.publisher_id = d.publisher_id and p.publisher_db = d.publisher_db and p.publication_id = a.publication_id
where
 d.publisher_db = @publisher_db and
 p.publication = @publication and
 c.command_id = 1;r

Получить нужный вам результат - дело техники.


Вместо команды получается: "ö"

Было бы неплохо еще и тип команды: insert, update или delete
15 сен 17, 05:04    [20797590]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить