Поделиться через


Класс событий Broker:Conversation

SQL Server формирует событие Broker:Conversation, чтобы сообщать о ходе диалога компонента Service Broker.

Столбцы данных класса событий Broker:Conversation

Столбец данных

Тип

Описание

Номер столбца

Фильтруемость

ApplicationName

nvarchar

Имя клиентского приложения, установившего соединение с экземпляром SQL Server. Этот столбец заполняется значениями, передаваемыми приложением, а не отображаемым именем программы.

10

Да

ClientProcessID

int

Идентификатор, присвоенный сервером процессу, в котором работает клиентское приложение. Этот столбец данных заполняется в том случае, если клиент предоставляет идентификатор клиентского процесса.

9

Да

DatabaseID

int

Идентификатор базы данных, указанный в инструкции USE database. Идентификатор базы данных по умолчанию, если инструкция USE database не выполнялась. Приложение Приложение SQL Server Profiler отображает имя базы данных, если столбец данных Server Name фиксируется при трассировке и при этом сервер доступен. Значение для базы данных определяется с помощью функции DB_ID.

3

Да

EventClass

int

Тип захваченного класса событий. Всегда 124 для класса событий Broker:Conversation.

27

Нет

EventSequence

int

Порядковый номер этого события.

51

Нет

EventSubClass

nvarchar

Тип подкласса события. Предоставляет дополнительные сведения о каждом классе событий.

21

Да

GUID

uniqueidentifier

Идентификатор диалога. Этот идентификатор передается как часть сообщения и является общим для обоих участников диалога.

54

Нет

HostName

nvarchar

Имя компьютера, на котором выполняется клиентская программа. Заполнение этого столбца данных производится в случае, если клиент предоставляет имя узла. Чтобы определить имя узла, используйте функцию HOST_NAME.

8

Да

IsSystem

int

Тип процесса (системный или пользовательский), в котором произошло событие.

0 = пользовательский процесс

1 = системный процесс

60

Нет

LoginSid

image

Идентификатор в системе безопасности вошедшего в систему пользователя. Значение идентификатора безопасности уникально для каждого имени входа на сервере.

41

Да

MethodName

nvarchar

Группа сообщений, которой принадлежит диалог.

47

Нет

NTDomainName

nvarchar

Домен Windows, к которому принадлежит пользователь.

7

Да

NTUserName

nvarchar

Имя пользователя, которому принадлежит соединение, сформировавшее это событие.

6

Да

ObjectName

nvarchar

Дескриптор диалога.

34

Нет

Priority

int

Уровень приоритета диалога

5

Да

RoleName

nvarchar

Роль дескриптора диалога. Значением может быть либо создатель, либо получатель.

38

Нет

ServerName

nvarchar

Имя отслеживаемого экземпляра SQL Server.

26

Нет

Severity

int

Уровень серьезности ошибки SQL Server, если это событие сообщает об ошибке.

29

Нет

SPID

int

Идентификатор серверного процесса, который SQL Server присвоил процессу, связанному с клиентом.

12

Да

StartTime

datetime

Время начала события, если оно доступно.

14

Да

TextData

ntext

Текущее состояние диалога. Одно из следующих значений:

  • SO. Запущен на отправку. SQL Server обработал инструкцию BEGIN CONVERSATION для этого диалога, но не было отправлено ни одного сообщения.

  • SI. Запущен на прием. Другой экземпляр компонента Database Engine начал новый диалог с текущим экземпляром, но текущий экземпляр еще не завершил прием первого сообщения. SQL Server может создать диалог в этом состоянии, если первое сообщение фрагментировано или если SQL Server получает сообщения неупорядоченно. Однако SQL Server может создать диалог сразу в состоянии CO, если первая передача, полученная для диалога, содержит первое сообщение целиком.

  • CO. Ведение диалога. Диалог установлен, и обе стороны диалога могут посылать сообщения. Для обычной службы основная часть обмена данными происходит, когда диалог находится в этом состоянии.

  • DI. Отключен на прием. Удаленной стороной диалога была выполнена инструкция END CONVERSATION. Диалог остается в этом состоянии до тех пор, пока локальная сторона диалога не выполнит инструкцию END CONVERSATION. Приложение может продолжать получать сообщения для диалога. Поскольку удаленная сторона диалога закончила диалог, приложение не может отправлять сообщения в этом диалоге. Когда приложение выполняет инструкцию END CONVERSATION, диалог переходит в закрытое (CD) состояние.

  • DO. Отключен на отправку. Локальной стороной диалога была выполнена инструкция END CONVERSATION. Диалог остается в этом состоянии до тех пор, пока удаленная сторона диалога не подтвердит прием END CONVERSATION. Приложение не может отправлять и получать сообщения для диалога. Когда удаленная сторона диалога подтверждает END CONVERSATION, диалог переходит в закрытое (CD) состояние.

  • ER. Ошибка. В данной конечной точке произошла ошибка. Столбцы Error, Severity и State содержат подробные данные о возникшей ошибке.

  • CD. Закрыт. Конечная точка диалога больше не используется.

1

Да

Transaction ID

bigint

Назначенный системой идентификатор транзакции.

4

Нет

В представленной ниже таблице перечислены значения подклассов для данного класса событий.

Идентификатор

Подкласс

Описание

1

SEND Message

SQL Server формирует событие SEND Message, когда Database Engine выполняет инструкцию SEND.

2

END CONVERSATION

SQL Server формирует событие END CONVERSATION, когда Database Engine выполняет инструкцию END CONVERSATION, в которую не входит предложение WITH ERROR.

3

END CONVERSATION WITH ERROR

SQL Server формирует событие END CONVERSATION WITH ERROR, когда Database Engine выполняет инструкцию END CONVERSATION, в которую входит предложение WITH ERROR.

4

Broker Initiated Error

SQL Server формирует событие Broker Initiated Error всякий раз, когда компонент Service Broker создает сообщение об ошибке. Например, если компонент Service Broker не может успешно направить сообщение для диалога, он создает сообщение об ошибке для диалога и формирует это событие. SQL Server не создает это событие, если прикладная программа завершает диалог с ошибкой.

5

Terminate Dialog

Компонент Service Broker прекратил диалог. Компонент Service Broker прекращает диалоги в ответ на появление условий, не позволяющих продолжить диалог, но не являющихся ошибками или нормальным завершением диалога. Например, в случае удаления службы компонент Service Broker прерывает все диалоги для этой службы.

6

Received Sequenced Message

SQL Server создает класс событий Received Sequenced Message, когда SQL Server получает сообщение, содержащее порядковый номер сообщения. Все определяемые пользователем типы сообщений являются последовательными. Компонент Service Broker формирует непоследовательное сообщение в двух случаях.

  • Сообщения об ошибках, формируемых компонентом Service Broker, являются непоследовательными.

  • Подтверждения сообщений могут быть непоследовательными. Чтобы повысить эффективность, компонент Service Broker включает подтверждения сообщений в состав последовательного сообщения. Однако, если приложение не посылает последовательные сообщения в удаленную конечную точку в течение определенного периода времени, компонент Service Broker создает непоследовательное сообщение для подтверждения сообщения.

7

Received END CONVERSATION

SQL Server создает событие Received END CONVERSATION, когда SQL Server получает сообщение End Dialog от другой стороны диалога.

8

Received END CONVERSATION WITH ERROR

SQL Server создает событие Received END CONVERSATION, когда он получает пользовательское сообщение об ошибке от другой стороны диалога. SQL Server не создает это событие, если он получает сообщение об определяемой посредником ошибке.

9

Received Broker Error Message

SQL Server создает событие Received Broker Error Message, если компонент Service Broker получает сообщение об определяемой посредником ошибке от другой стороны диалога. SQL Server не создает этого события, если компонент Service Broker получает сообщение об ошибке, формируемое приложением.

Например, если текущая база данных содержит маршрут по умолчанию к базе данных пересылки, компонент Service Broker направляет сообщение с неизвестным именем службы в базу данных пересылки. Если база данных пересылки не может определить маршрут для сообщения, посредник в этой базе данных создает сообщение об ошибке и возвращает его в текущую базу данных. Если текущая база данных получает формируемое посредником сообщение об ошибке из базы данных пересылки, текущая база данных формирует событие Received Broker Error Message.

10

Received END CONVERSATION Ack

SQL Server формирует класс событий Received END CONVERSATION Ack, когда другая сторона диалога подтверждает сообщение «End Dialog» или «Error», переданное этой стороной диалога.

11

BEGIN DIALOG

SQL Server формирует событие BEGIN DIALOG, когда ядро СУБД выполняет команду BEGIN DIALOG.

12

Dialog Created

SQL Server создает событие Dialog Created, если компонент Service Broker создает конечную точку для диалога. Компонент Service Broker создает конечную точку каждый раз при установлении нового диалога, независимо от того, является ли текущая база данных инициатором или целью диалога.

13

END CONVERSATION WITH CLEANUP

SQL Server формирует событие END CONVERSATION WITH CLEANUP, когда Database Engine выполняет инструкцию END CONVERSATION, в которую входит предложение WITH CLEANUP.