1、显示服务:sys.services
- name [服务名称]
- service_id [服务的对象ID]
- principal_id [拥有这个契约的principal ID]
- service_queue_id [服务队列的对象ID]
2、显示服务契约:sys.service_contracts
- name [契约名称]
- service_contract_id [契约的对象ID]
- principal_id [拥有这个契约的principal ID]
3、显示契约中使用了哪些消息类型:sys.service_contract_message_usages
- service_contract_id [服务契约的对象ID]
- message_type_id [上面的契约所使用的消息类型的对象ID]
- is_sent_by_initiator [如果为1,消息类型是由源发送的]
- is_sent_by_target [如果为1,消息类型是由目标发送的]
4、显示消息类型:sys.service_message_types
- name [消息类型名称]
- message_type_id [消息类型的对象ID]
- principal_id [拥有这个契约的principal ID]
- validation [消息类型请求的验证类型。可以是以下值:
N表示无(即没有验证)
X表示XML(由Service broker验证XML)
E表示空(消息主体总是为空)]
- validation_desc [上面列的具体文本,值为NONE、XML或EMPTY]
- xml_collection_id [XML集合的对象ID]
5、显示服务队列定义:sys.service_queues
- max_readers Service broker [同时运行的队列读取器的最大数量]
- activation_procedure [已激活的存储过程的名称]
- execute_as_principal_id [已激活的存储过程将作为这个principal运行]
- is_activation_enabled [如果值为1,在这个队列上启用了激活]
- is_receive_enabled [如果值为1,服务可以在这个队列上发送RECEIVE命令]
- is_enqueue_enabled [如果值为1,服务可以在这个队列上发送SEND命令]
- is_retention_enabled [如果值为1,在这个队列上启用了保持]
6、显示哪个服务正在使用这个队列:sys.service_queue_usages
- service_id [服务的对象ID]
- service_queue_id [队列的对象ID]
- name [路由的唯一名称]
- route_id [路由的对象ID]
- principal_id [拥有这个路由的principal ID]
- remote_service_name 远程服务名称]
- broker_instance [远程Service broker的唯一实例标识符,这个Service broker拥有上面的远程服务]
- lifetime [这个路由过期的日期和时间(UTC时间)]
- address [远程Service broker的网络地址]
- mirror_address [远程Service broker镜像的网络地址。这个列是可选的,仅在Service broker启用了数据库镜像之后使用]
8、显示远程服务绑定:sys.remote_service_bindings
- Name [远程服务绑定的唯一名称]
- remote_service_binding_id [远程服务绑定的对象ID]
- principal_id [拥有这个远程服务绑定的principal ID]
- remote_service_name [远程服务名称]
- service_contract_id [服务契约的对象ID]
- remote_principal_id [远程principal的对象ID。当与该服务通信时,使用与这个principal关联的证书]
- is_anonymous_on [如果值为1,这个远程服务的会话将是匿名的,即无法知道哪个用户开始了这个会话]
9、显示端点:sys.service_broker_endpoints
- is_message_forwarding_enabled [如果值为1,这个端点支持转发消息]
- message_forwarding_size [tempdb中用于转发消息的空间的大小,单位MB]
- connection_auth [使用这个端点的连接所需要的身份认证类型,可以是以下值:
2表示Kerberos
3表示Negotiate
4表示证书
5表示NTLM、证书
6表示Kerberos、证书
7表示Negotiate、证书
8表示证书、NTLM
9表示证书、Kerberos
10表示证书、Negotiate]
- connection_auth_desc [以上这些值的文本表示,可以是以下值:
KERBEROS
NEGOTIATE
CERTIFICATE
NTLM,CERTIFICATE
KERBEROS,CERTIFICATE
NEGOTIATE,CERTIFICATE
CERTIFICATE,NTLM
CERTIFICATE,KERBEROS
CERTIFICATE,NEGOTIATE ]
- certificate_id [用于身份认证的证书的对象ID]
- encryption_algorithm [加密算法:
1表示RC4
2表示AES
3表示None、RC4
4表示None、AES
5表示RC4、AES
6表示AES、RC4
7表示None、RC4、AES
8表示None、AES、RC4 ]
-
encryption_algorithm_desc
NONE
RC4
AES
NONE,RC4
NONE,AES
RC4,AES
AES,RC4,AES
NONE,AES,RC4 ]
10、显示会话端点:sys.conversation_endpoints
- conversation_handle [用于通过编程方式访问这个会话的唯一标识符]
- conversation_id [会话的唯一标识符]
- is_initiator [如果值为1,这个端点就是会话的开始点。如果值为0,这个端点就是会话的目标点]
- conversation_group_id [拥有这个会话的会话组的唯一标识符]
- lifetime [这个会话过期的日期和时间]
- State [这个会话的当前状态:
SI表示开始对内会话
CO表示交谈
DI表示断开的对内会话
DO表示断开的对外会话
ER表示错误
CD表示关闭]
- state_desc [以上状态字段的文字描述,值如下所示:
STARTED_INBOUND
CONVERSING
disCONNECTED_INBOUND
disCONNECTED_OUTBOUND
ERROR
CLOSED ]- far_service [远端服务名称]
- far_broker_instance [远端Service broker的唯一标识符]
- principal_id [拥有本地会话使用的证书的principal对象ID]
- far_principal_id [拥有远端会话使用的证书的principal对象ID]
- outbound_session_key_identifier [用于对外加密的唯一标识符]
- inbound_session_key_identifier [用于对内加密的唯一标识符]
- security_timestamp [本地会话键创建的时间]
- dialog_timer [Service broker发送DialogTimer消息的时间]
- send_sequence [这个号码表示发送序列中下一个号码]
- last_send_tran_id [最后一个发送操作的事务标识符]
- end_dialog_sequence [结束对话框消息的序列号码]
- receive_sequence [这个号码表示下一个等待接受的序列号码]
- receive_sequence_frag [这个号码表示下一个等待接受的消息片段序列号码]
- system_sequence [这个会话中看到的系统消息的最后一个序列号码]
- first_out_of_order_sequence [第1个次序颠倒的消息的序列号码]
- last_out_of_order_sequence [最后一个次序颠倒的消息的序列号码]
- last_out_of_order_frag [最后一个次序颠倒的消息片段的序列号码]
- is_system [如果值为1,这就是一个系统对话框]
11、显示会话组:sys.conversation_groups
- conversation_group_id [拥有这个会话的会话组的唯一标识符]
- service_id [服务的对象ID]
- is_system [如果值为1,这就是一个系统级会话组,并不是供用户使用的]
12、显示队列内容:select * from <user_queue_name>
- status [消息的状态。可以是以下值:
1表示准备好了
2表示还没有完成
3表示保留的发送消息 ]- queuing_order [队列中的消息顺序号]
- conversation_group_id [拥有这个会话的会话组的唯一标识符]
- conversation_handle [用于通过编程方式访问这个会话的唯一标识符]
- message_sequence_number [会话流中这个消息的相对位置]
- service_name [这个消息发送到的服务的名称]
- service_id [服务的对象ID]
- service_contract_name [服务契约的名称]
- service_contract_id [服务契约的对象ID]
- message_type_name [消息的类型名称]
- message_type_id [消息类型的对象ID]
- validation [消息类型请求的验证类型。可以是以下值:
X表示XML(由Service broker验证XML)
E表示空(消息主体总是为空) ]- message_body [这个消息的二进制有效内容。注意,这里的数据格式完全由应用程序决定]
- message_id [这个消息的唯一标识符]
13、显示broker的连接:sys.dm_broker_connections
- connection_id [连接的唯一标识符]
- transport_stream_id [传输流的唯一标识符]
- state [连接的当前状态:
2表示正在连接中
3表示已连接
4表示登录成功
5表示连接关闭 ]- state_desc [上面状态的文字描述:NEW、CONNECTING、CONNECTED、LOGGED_IN和CLOSED]
- connect_time [连接打开的日期和时间]
- login_time [登录发生的日期和时间]
- authentication_method [Windows所使用的身份认证方式]
- principal_name [用于验证连接权限的登录名]
- remote_user_name [用于做Windows身份认证的远程用户名]
- last_activity_time [连接最后一次发送和接收数据的日期和时间]
- is_accept [如果值为1,这个连接是从远程获得的如果为0,这个连接是从本地建立的]
- login_state [这个数字表示登录过程的当前状态:
1表示Negotiate
2表示sspI
3表示Public Key Login
4表示Public Key Tentative
5表示Logged In
6表示Arbitration ]-
login_state_desc
Initial
Negotiate
sspI
PublicKeyLogin
PublicKeyTentative
LoggedIn
Arbitration ]- peer_certificate_id [身份验证远程实例所用证书的本地对象ID]
- receives_posted [这个连接尚未完成的异步网络接收数目]
- is_receive_flow_controlled [如果值为1,表示由于网络流控制,网络接收已经延迟]
- sends_posted [这个连接尚未完成的异步网络发送数目]
- is_send_flow_controlled [如果值为1,表示由于网络流控制,网络发送已经延迟]
- total_bytes_sent [这个连接上总共的发送字节数]
- total_bytes_received [这个连接上总共的接收字节数]
- total_fragments_sent [这个连接上总共发送的消息片段数目]
- total_fragments_received [这个连接上总共接收的消息片段数目]
- total_sends [这个连接上总共网络发送请求数]
- total_receives [这个连接上总共网络接收请求数]
- encalg [所使用的加密算法:
2表示RC4
3表示AES ]
13、显示活动的任务:sys.dm_broker_activated_tasks
- spid [已激活的存储过程的会话ID]
- database_id [数据库的对象ID]
- queue_id [服务队列的对象ID]
- procedure_name [已激活的存储过程的名称]
- execute_as [运行存储过程的用户的对象ID]
14、显示队列监视器:sys.dm_broker_queue_monitors
- database_id [数据库的对象ID]
- queue_id [服务队列的对象ID]
- state [队列监视器的当前状态,可以是以下值:
NOTIFIED
RECEIVES_OCCURRING ]- last_empty_rowset_time [最后一次RECEIVE返回一个空行集的日期和时间]
- last_activated_time [最后一次存储过程被激活的日期和时间]
- tasks_waiting [当前正在等待消息的RECEIVE语句数量]
15、数据库列表:sys.databases
- service_broker_guid [这个数据库中的Service broker的唯一标识符]
- is_broker_enabled [如果值为1,表示这个数据库上启用了Service broker]
16、数据库所有端点列表:sys.endpoints
- Name [这是该端点的唯一名称。你可以决定端点的名字,但是你必须给出一种方法防止出现重名]
- endpoint_id [这是一个唯一的整型值,它也定义了这个端点。由于这是一个整型值,所以对于与其他表做JOIN十分有用,它可能是其他视图的外键]
- principal_id [拥有这个端点的sql Server principle的标识符ID]
- Protocol [整型值,用于识别这个端点使用了什么协议。Service broker端点总是使用TCP/IP作为协议,所以这里的值是2]
- protocol_desc [这个字段包含了对该端点协议设置的文字描述,Service broker端点总是显示TCP]
- Type [这个字段描述了端点负载的类型。所有的Service broker端点都是3]
- type_desc [Type字段的文字描述。对于Service broker端点,这里是SERVICE_broKER]
- State [从诊断的角度看,下面两列最重要,因为它们描述了Service broker端点的当前状态。值如下所示:
1表示端点处于停止状态(Stopped)
2表示端点处于禁用状态(disabled) ]- state_desc [状态字段的文字描述。值如下所示:STARTED、STOPPED或disABLED]
- is_admin_endpoint [对于Service broker端点,这个字段总是0]
17、数据库安全证书:sys.certificates
当配置Service broker把Kerberos作为安全对话框的加密方式时,你会把公钥和私钥保存在证书中,而这些证书会导入当前数据库。另外,为了防止配置错误,用于安全对话框的证书必须这样表示。sys.certificates视图包含一个is_active_for_begin_dialog列,是一个位类型的字段。如果位值为1,表示这个证书是由Service broker使用的。如果值为0,Service broker就无法使用这个证书。
尝试使用一个没有被标记为激活的BEGIN DIALOG证书会导致一个错误,该错误会在sys. transmission_queue/transmission_status中显示。要在现有的证书上启用这个标记,可以使用ALTER CERTIFICATE命令,然后设置WITH ACTIVE FOR BEGIN DIALOG = ON。18、对称密钥:sys.symmetric_keys
Service broker需要为适当的安全通信操作准备两个对称密钥。服务主密钥(Service Master Key)和数据库主密钥(Database Master Key)以行的形式保存在这个视图中,如果这两个密钥没有找到,你会收到一个来自Service broker的错误。要创建这两个密钥其实很简单,可以使用CREATE SYMMETRIC KEY命令。
19、Service broker任务:sys.sysprocesses
许多服务器中的后台任务都为Service broker处理服务。cmd列显示了任务的名称。有关Service broker的任务以及它们的职责如下所示。- BRKR ASYNC CONN。这个任务负责连接远端Service broker。
- BRKR CMpltN HDLR。这个任务负责处理IO完成(IO completion)。
- BRKR MSG XMITTER。这是消息发送器任务。所有通过网络发送的消息都要通过这个任务。
- BRKR MSG DSPTCHR。这个消息分配器负责在本地和远程发送消息。
- BRKR EVENT HNDLR。这个任务负责处理内部事件。
- BRKR INITIALIZER。sql Server在被要求启动之后快速初始化,这样,系统的用户可以快速开始使用系统。但是前提是你有一个包含数百万激活对话框的数据库。启动的时间可能比较长。Service broker初始化任务允许服务器继续启动,然后在后台异步初始化激活的Service broker。在通常情况下,在后台看这个任务不会有任何警告。但如果系统已经运行了很长时间,或者并非大量对话框要初始化,这个任务不应该被绕过。
- BRKR TASK。这是一个内部激活的存储过程。
- DBCC SSB CHECK。这个任务会检查数据库的一致性。只有在DBCC CHECKDB运行时,你才会看到这个任务。
20、Service broker作整体监控:Perfmon
在Perfmon中找到的Service broker信息确实要更加全局化,因此相对于服务级别的问题诊断,它更适合于对Service broker作整体监控。与sql Profiler一样,Perfmon中收集到的信息也可以由sql Server的sqlDiag工具收集,但sqlDiag并不需要Perfmon。有3种Perfmon计数器分类: broker激活、broker统计和broker/DBM传输。接下来的内容描述了这些计数器的用途。
计数器名称
描述 Stored Procedures Invoked/sec
Service broker中每秒调用的已激活的存储过程的数量 Task Limit Reached Service broker中已激活任务到达队列的上限时间 Task Limit Reached/sec 上面的计数器的每秒速率 Tasks Running 目前正在Service broker中运行的已激活任务的数量 Tasks Started/sec Service broker中每秒调用的已激活的任务数量
这些计数器负责监视某个特定的Service broker的所有操作。它们可以告诉你那个Service broker的整体健康状况
(监视某个特定的Service broker所有操作的计数器)broker Transaction Rollbacks这个Service broker检测到的事务回滚数 Dialog timer event count Service broker中当前处于激活状态的对话框计时器的数量 Enqueued Local Messages Total Service broker发出的消息总数。这里的数量仅包括从本地发送的消息,而不包括从网络到达的消息 Enqueued Local Messages/sec Enqueued Messages Total 进入本地队列的所有消息的数量 Enqueued Messages/sec Enqueued Transport Msg Frag Tot 一个队列中消息片段的总数。注意,在传输过程中一个大消息会自动被分成许多小的片段 Enqueued Transport Msg Frags/sec Enqueued Transport Msgs Total Service broker发出的消息总数。这个数字仅包括通过网络到达的消息数 Enqueued Transport Msgs/sec Forwarded Messages Total 这个Service broker转发的消息总数 Forwarded Messages/sec Forwarded Msg Byte Total 这个Service broker转发的字节总数 Forwarded Msg Bytes/sec Forwarded Msg discarded Total 这个Service broker丢弃的转发消息总数 Forwarded Msg discarded/sec Forwarded Pending Msg Bytes 所有的等待被发送的转发消息的字节总数 Forwarded Pending Msg Count 当前等待被发送的转发消息的数量 sql RECEIVE Total 已经处理的T-sql RECEIVE命令总数 sql RECEIVEs/sec sql SEND Total 已经处理的T-sql SEND命令总数 sql SENDs/sec 上面的计数器的每秒速率
这些计数器是由Service broker和数据库镜像共享的传输层所使用的
Current Bytes for Recv I/O 这次传输读取的当前字节数 Current Bytes for Send I/O 这次传输通过网络发送的当前字节数 Current Msg Frags for Send I/O 当前通过网络发送的消息片段数量 Message Fragment Send Size Avg 通过网络发送的消息片段的平均大小,单位是字节 Message Fragment Send Total 通过网络发送的消息片段总数 Message Fragment Sends/sec Message Fragment Receive Total 从网络收到的消息片段总数 Message Fragment Receives/sec Message Fragment Recv Size Avg 从网络收到的消息片段的平均大小 Open Connection Count 当前打开的连接数 Pending Bytes for Recv I/O Service broker传输从网络收到的字节数,但是这些字节还没有放入队列或还未丢弃 Pending Bytes for Send I/O 等待通过网络发送的消息片段的字节数 Pending Msg Frags for Recv I/O Service broker传输从网络收到的消息片段数,但是这些字节还没有放入队列或还未丢弃 Pending Msg Frags for Send I/O Receive I/O Bytes Total 从网络收到的字节总数 Receive I/O Bytes/sec Receive I/O Len Avg 每次通过网络接收的平均字节数 Receive I/Os/sec 每秒完成的传输接收IO操作数 Send I/O Bytes Total 通过网络发送的字节总数 Send I/O Bytes/sec Send I/O Len Avg 每次通过网络发送的平均字节数 Send I/Os/sec 每秒完成的传输发送IO操作数
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。