Tho*_*mas 7 c# sql-server sqldependency
1)我想知道sql server如何在客户端和数据库之间建立通道.我想必须有一个频道,为什么sql server可以通过该频道向客户端发送通知.请详细讨论这个问题.因为我看到很多关于sql依赖的文章,但每个机构都给出了代码,但没有机构解释它是如何工作的细节.什么是服务经纪人?
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;
Run Code Online (Sandbox Code Playgroud)
他们从不使用NameChangeQueue队列为什么?我怎么知道谁将使用这个队列?
4)即使我看到人们创造角色但却不知道为什么在这种情况下需要角色?
所以请详细讨论我的所有要点,因为我需要了解所有要点.谢谢
Rem*_*anu 12
首先阅读神秘通知,了解查询通知的工作原理.SqlDependency只是一个利用查询通知的.Net包装器.这应该回答你的大部分问题.
查询通知使用Service Broker(SSB)将通知本地传递到数据库中的队列.虽然SSB可以加密流量,但这与SqlDependency无关,因为在服务器进程内交付是本地的.客户端应用程序通过WAITFOR(RECEIVE)使用普通SqlConnection在队列上发布来获取通知.
在你发布的例子中NameChangeQueue,确实从未使用过.通过使用SqlDependency对象,作者实际上正在使用在调用时及时部署的临时队列SqlDependency.Start().如使用SqlNotificationRequest订阅查询通知中SqlNotificationRequest所述,作者可以使用较低级别,这允许您指定要使用的队列.
查询通知权限中描述了所需的权限,但如果您使用,SqlDependency则还需要权限来创建SqlDependency使用的临时队列和存储过程.
阅读链接的文章,如果您有更多问题,请在此处提出新问题(请不要发表更多问题作为评论).
| 归档时间: |
|
| 查看次数: |
2554 次 |
| 最近记录: |