积极答复者
Service Broker事件通知功能

问题
-
-- Capturing Login Commands
--创建示例数据库
CREATE DATABASE EventTracking
GO
USE EventTracking
GO
--创建队列
Create QUEUE SQLEventQueue WITH STATUS=ON;
GO
--创建服务,并关联到内建的事件通知约定
CREATE SERVICE [//AP4/TrackLoginModificationService]
ON QUEUE SQLEventQueue ([http://schemas.microsoft.com/SQL/Notifications/PostEventNotification]);
GO
--对系统目录视图sys.databases进行查询
select service_broker_guid from sys.databases WHERE name = 'EventTracking'/*/*------------------------
select service_broker_guid from sys.databases WHERE name = 'EventTracking'
------------------------*/
service_broker_guid
------------------------------------
D7B127E2-9FF0-4BFF-9D41-978F178553C9(1 行受影响)*/
--在Server范围内创建事件通知来跟踪所有登录名的创建、修改和删除操作
----DROP EVENT NOTIFICATION EN_LoginEvents
----ON Server;
Create EVENT NOTIFICATION EN_LoginEvents ON SERVER FOR CREATE_LOGIN, ALTER_LOGIN, DROP_LOGIN
TO SERVICE '//AP4/TrackLoginModificationService','D7B127E2-9FF0-4BFF-9D41-978F178553C9';
--测试新的事件通知,创建一个登录名
----DROP login TrishelleN
----go
Create LOGIN TrishelleN WITH PASSWORD = 'AR!3i2ou4'
GO
--使用Select或Recieve(其中Recieve会删除队列中的事件消息)查询队列
/*------------------------
SELECT CAST(message_body as xml) EventInfo FROM dbo.SQLEventQueue
------------------------*/
EventInfo
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------(0 行受影响)
为什么是空值 ? 能给分析原因出在哪里吗?星光总能为我指引方向
答案
-
你有配置有正确配置 Service broker endpoint 么?
如果有正确配置,那么在命令提示下用 telnet 测试一下,看看端口是否打开
telnet ip 端口
如果不通,那么在 ip 对应的服务器命令提示符下用 netstat -na 看下对应的端口是否在监听状态,如果是,那么可能是防火墙限制了访问
- 已标记为答案 Molly Chen_Moderator 2012年5月30日 3:10
全部回复
-
ADDRESS 里面指定的是你的 WITH SERVICE_NAME = 'RemotServiceService', 这里面指定的 Service 所在的服务器的 IP 和 SSB endpoint 的端口很高兴你的解答; 是跨实例的,你的意 ADDRESS 里面指定的是你的 WITH SERVICE_NAME = 'RemotServiceService', 指的是另外一台实力的IP地址码?
最后执行报出这个错误信息:
SELECT transmission_status FROM SYS.transmission_queuetransmission_status Connection attempt failed with error: '10061(由于目标计算机积极拒绝,无法连接。)'. Connection attempt failed with error: '10061(由于目标计算机积极拒绝,无法连接。)'. Connection attempt failed with error: '10061(由于目标计算机积极拒绝,无法连接。)'. Connection attempt failed with error: '10061(由于目标计算机积极拒绝,无法连接。)'. 星光总能为我指引方向
-
你有配置有正确配置 Service broker endpoint 么?
如果有正确配置,那么在命令提示下用 telnet 测试一下,看看端口是否打开
telnet ip 端口
如果不通,那么在 ip 对应的服务器命令提示符下用 netstat -na 看下对应的端口是否在监听状态,如果是,那么可能是防火墙限制了访问
- 已标记为答案 Molly Chen_Moderator 2012年5月30日 3:10