什么是服务经纪人?
Service Broker体系结构允许您构建松散耦合的sql Server实例,以便实例使用正常的消息传递方式相互通信. Service Broker使用TCP / IP从网络传输消息,因此允许加密消息传递.它既适用于使用sql Server实例的应用程序,也适用于将工作分配到多个sql Server实例的应用程序. Service Broker允许使用Queue来保存消息,因此消息将被逐个处理,而调用者无需等待接收消息.
1)我想知道服务代理总是以加密格式传递消息?
2)Service Broker允许使用Queue来保存消息.服务代理使用的队列名称是什么.我如何才能看到该队列中存储的内容?
3)我看到很多人创建队列,但没有提到他们创建的原因?他们也没有在代码中使用该队列.这是一个网址和示例代码
http://www.dreamincode.net/forums/topic/156991-using-sqldependency-to-monitor-sql-database-changes/
CREATE QUEUE NameChangeQueue; CREATE SERVICE NameChangeService ON QUEUE NameChangeQueue ([http://schemas.microsoft.com/sql/Notifications/PostQueryNotification]); GRANT SUBSCRIBE QUERY NOTIFICATIONS TO YourUserName; ALTER DATABASE YourDatabaseName SET ENABLE_BROKER;
他们从不使用NameChangeQueue队列为什么?我怎么知道谁将使用这个队列?
4)即使我看到人们创造角色但却不知道为什么在这种情况下需要角色?
所以请详细讨论我的所有要点,因为我需要了解所有要点.谢谢
解决方法
查询通知使用Service Broker(SSB)将通知本地传递到数据库中的队列.虽然SSB可以加密流量,但这与sqlDependency无关,因为在服务器进程内交付是本地的.客户端应用程序通过使用普通sqlConnection在队列上发布WAITFOR(RECEIVE)
来获取通知.
在您发布的示例中,确实从未使用过NameChangeQueue.通过使用sqlDependency对象,作者实际上在调用sqlDependency.Start()时正在使用临时部署的临时队列.作者可以使用Using SqlNotificationRequest to Subscribe to Query Notifications中描述的较低级别的sqlNotificationRequest,它允许您指定要使用的队列.
所需的权限在Query Notification Permissions中描述,但如果使用sqlDependency,则还需要权限来创建sqlDependency使用的临时队列和存储过程.