Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SQL2008_Administration.doc
Скачиваний:
91
Добавлен:
08.11.2018
Размер:
3.38 Mб
Скачать

7.4.8. Работа с wmi Provider for Server Events

WMI Provider for Server Events — это специальный поставщик WMI, основная задача которого заключается в предоставлении доступа через стандартный программный интерфейс WMI к уведомлениям о событиях (event notifications): событиях DDL, событиях трассировки и т.п. При возникновении события сообщение о нем в формате XML помещается в очередь Service Broker. Поэтому для работы этим поставщиком WMI необходимо обязательно включить Service Broker для нужной базы данных.

Просмотреть информацию о том, для каких баз данных включен Service Broker, можно при помощи запроса

USE master

GO

SELECT name, is_broker_enabled FROM sys.databases

Чтобы включить Service Broker, можно воспользоваться командой ALTER DATABASE, например,

ALTER DATABASE AdventureWorks SET ENABLE_BROKER

Пример использования WMI Provider for Server Events.

Необходимо производить мониторинг любых изменений, вносимых в структуру любой таблицы БД DB1 на сервере LONDON2\SQL2008 и немедленно получать информацию об имени изменившейся таблицы, имени пользователя, который внес изменения и команде Transact-SQL, с помощью которой было произведено данное изменение.

Создадим приложение, которое будет реагировать на такое изменение, следующим образом.

  1. Создадим новый проект .NET, воспользовавшись шаблоном для языка Visual Basic.NET, который называется Console Application.

  2. Добавим в проект сслыку на сборку с необходимыми классами для работы с WMI. Для этого в меню Project (Проект) в Visual Studio.NET нужно выбрать команду Add Reference (Добавить ссылку), на вкладке .NET выбрать пространство имен System.Management и нажать на кнопку OK.

  3. Создадим программный код. Программый код модуля NewModule.vbs, может выглядеть так:

Imports System

Imports System.Management

Module NewModule

Sub Main()

'Создаем объект диапазона и подключаемся к пространству имен

'WMI Provider for Server Events на локальном сервере

'для экземпляра SQL2008

Dim oScope As New ManagementScope("\\.\root\Microsoft\SqlServer\ServerEvents\SQL2008")

oScope.Connect()

'Определяем объект событийного запроса WQL

Dim oQuery As New WqlEventQuery("SELECT * FROM ALTER_TABLE WHERE DatabaseName = 'DB1'")

'Определяем объект наблдюдателя за событием и передаем ему запрос

Dim oWatcher As New ManagementEventWatcher(oQuery)

'Определяем диапазон наблюдения для объекта наблюдателя

oWatcher.Scope = oScope

'Сигнализируем о начале наблюдения

Console.WriteLine("Начинаем мониторинг")

Dim oBaseObject As ManagementBaseObject

'Начинаем перехват событий в бесконечном цикле

Dim i As Integer

i = 0

Do While i = 0

oBaseObject = oWatcher.WaitForNextEvent()

'Выводим нужные свойства объекта, для которого произошло событие

Console.WriteLine(oBaseObject.Properties("ObjectName").Value & _

vbCrLf & oBaseObject.Properties("TSQLCommand").Value)

Loop

End Sub

End Module

Глава 8. Мониторинг и оптимизация производительности sql Server 2008

8.1. Мониторинг активности пользователей

8.1.1. Применение Activity Monitor

Консоль Activity Monitor встроена в SQL Server Management Studio. Найти ее можно в контекстном меню для объекта сервера SQL Server 2008 в Object Explorer.

В этой консоли предусмотрено три вкладки:

  1. На вкладке Process Info – информация о подключениях к SQL Server: для каждого из процессов можно просмотреть последнюю выполненную команду (пункт Details в контекстном меню) и принудительно закрыть это подключение (команда Kill). Чтобы просмотреть все подключения (системные и пользовательские), нужно нажать кнопку Filter и снять флажок Apply Filter.

  2. На вкладке Locks by Process – информация о блокировках, установленных конкретным процессом на объекты баз данных.

  3. На вкладке Locks by Object – информация о блокировках, установленных на конкретный объект БД.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]