C# · 12月 25, 2021

c# – sql依赖如何用于来回传递数据

1)我想知道sql server如何在客户端和服务器之间建立一个通道. D b.我想必须有一个频道,为什么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;

他们从不使用NameChangequeue队列为什么?我怎么知道谁将使用这个队列?

4)即使我看到人们创造角色但却不知道为什么在这种情况下需要角色?

所以请详细讨论我的所有要点,因为我需要了解所有要点.谢谢

解决方法 首先阅读 The Mysterious Notification以了解查询通知的工作原理. sqlDependency只是一个利用查询通知的.Net包装器.这应该回答你的大部分问题.

查询通知使用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使用的临时队列和存储过程.

阅读链接的文章,如果您有更多问题,请在此处提出新问题(请不要发表更多问题作为评论).