Затем необходимо собрать статистические данные о подписках в таблице SubscriptionHeader, в том числе об общих характеристиках производительности, числе реплицированных событий и состоянии. Для сбора статистики о подписке необходимо использовать хранимую процедуру spreplmonitorhclpmergescssion. Диспетчер репликации использует эту системную хранимую процедуру для визуального отслеживания подписок. Его функционирование в значительной мере зависит от агента, который обрабатывает данные, синхронизируемые между источником данных публикации и источниками данных подписки. Но прежде чем можно будет использовать sp_ replmonitorhelpmcrgesession, необходимо собрать значения для нескольких параметров, в том числе уникальный идентификатор агента подписок. Важность идентификатора агента определяется предшествующим контейнером, который получает и обновляет информацию заголовка подписки. Как имя ReplNick и версия схемы, идентификатор агента может измениться при удалении и повторной вставке подписки.
Для выполнения spreplmonitor-hclpmergesession требуются следующие параметры:
• @agent_name. Этот параметр указывает имя агента, которое будет получено из agcnt id, соответствующего agcntname.
• @hours. По умолчанию данному параметру присваивается значение -1 и возвращаются все предшествующие сеансы (до 100).
• @publisher. Данный параметр указывает имя экземпляра SQL Server, в котором размещена публикация.
в @publisher_db. Этот параметр предоставляет имя публикуемой базы данных.
• @publication. Данный параметр указывает имя публикации, участвующей в событиях слияния. Чтобы получить значения для этих параметров и обеспечить выполнение хранимой процедуры для всех подписывающихся экземпляров SQL Server, следует воспользоваться табл и цей М Srcplicationmonitordata в базе данных распространителя. Эта таблица содержит кэшированную строку для каждого подписчика, который пытался выполнить синхронизацию с публикацией. Это может быть успешная или неудачная попытка слияния. Информация, полученная из MSreplicationmonitordata, может оказаться полезной для анализа истории. В процессе сбора agent_name, publisher, publisher db и publication будут использоваться для заполнения параметров хранимой процедуры sp_ replmonitorhelpmcrgesession. Чтобы применить инструкцию SELECT к MSreplication monitordata, необходимо иметь уникальный ключ, обеспечивающий итерацию каждой строки в результате, то есть основной ключ. Сделать это удобнее всего с помощью функции ROW NUMBER (). Она позволяет быстро последовательно нумеровать строки, добавляя номера в новый столбец. Затем этот столбец можно использовать для прохождения по результатам и выполнения специфических операций в зависимости от возвращаемых значений. Все описанные действия соединены в сценарии Create_And_Populate_ MERGE STATS. sql (листинг 6). После создания таблицы MERGE_ STATS этот сценарий получает подписки из MSreplication monitordata, а затем проходит по всем строкам и выполняет хранимую процедуру spreplmonitormergesession. Результаты каждого исполнения вставляются во вспомогательную глобальную временную таблицу с именем ##GLOBALSTATS. Позднее данные в ##GLOBALSTATS вставляются в таблицу MERGE STATS. Обратите внимание, что при использовании задачи для создания временной таблицы в службе SSIS необходимо назначить значение True параметру DelayValidation. Это не даст задаче вызвать ошибку в среде разработки и позволяет построить пакет, когда объектов еще не существует.
В службах SSIS запрос в Create_ AndPopulateMERGESTATS. sql используется в качестве источника для задачи Data Flow, которая получает окончательные результаты и импортирует их в таблицу MERGESTATS. Сначала выполняется проверка существования глобальных временных таблиц. Если они существуют, то они отбрасываются, чтобы предотвратить ошибки в дальнейшем. Последний шаг процесса — вставить содержимое результирующей глобальной временной таблицы в таблицу MERGESTATS.