SEND命令是在SQL Server 2005版本引入的。它是一种类似于INSERT的命令,只是SEND只用在SQL Server服务代理中。在服务代理中,你是将数据填入一个队列,而不是数据库表中。你并不是把命令插入到队列中,而是向队列发送一个消息,这就像你向其他人发送一个电子邮件一样。
服务代理也使用相同的做法(更准确地说,它们并不完全相同,因为电子邮件是每一个人都能接收的)。 当你使用SEND命令时,你必须先使用BEGIN DIALOG命令。所以在你发送消息之前,你必须先启动一个对话框,它再启动一个会话,然后使用服务去完成实际的逻辑操作。这是通过BEGIN DIALOG命令来完成的,如下……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
SEND命令是在SQL Server 2005版本引入的。它是一种类似于INSERT的命令,只是SEND只用在SQL Server服务代理中。在服务代理中,你是将数据填入一个队列,而不是数据库表中。你并不是把命令插入到队列中,而是向队列发送一个消息,这就像你向其他人发送一个电子邮件一样。服务代理也使用相同的做法(更准确地说,它们并不完全相同,因为电子邮件是每一个人都能接收的)。
当你使用SEND命令时,你必须先使用BEGIN DIALOG命令。所以在你发送消息之前,你必须先启动一个对话框,它再启动一个会话,然后使用服务去完成实际的逻辑操作。这是通过BEGIN DIALOG命令来完成的,如下的示例代码。
在你获得了@dialog_handle变量中的对话句柄后,你就可以使用这个句柄发送实际的消息到之前你启动对话框时开始的会话。在我们下面的例子中,我们只是发送sys.tables DMV的内容到队列中:
DECLARE @xml AS XML DECLARE @dialog_handle AS uniqueidentifier SET @xml = (SELECT * FROM sys.tables FOR XML AUTO)BEGIN DIALOG @dialog_handle FROM SERVICE [tcp://codecamp/AW/sample_send_service] TO SERVICE tcp://codecamp/AW/sample_receive_service ON CONTRACT [tcp://codecamp/AW/sample_contract];SEND ON CONVERSATION @dialog_handle MESSAGE TYPE [tcp://codecamp/AW/sample_messagetype] (@xml); |
还不太清楚,是吗?我的博客后面很快就会有关于RECEIVE命令的内容更新,你可以用它来读取消息内容。并且在更新中我会给一个示例代码链接,那些代码是我在文章中多次使用的,它们应该能帮助你融会贯通这些内容。
翻译
TechTarget中国特约技术编辑,某高校计算机科学专业教师和网络实验室负责人,曾任职某网络国际厂商,关注数据中心、开发运维、数据库及软件开发技术。有多本关于思科数据中心和虚拟化技术的译著,如《思科绿色数据中心建设与管理》和《基于IP的能源管理》等。
相关推荐
-
如何解决和避免SQL Server数据库死锁
学习如何避免SQL Server数据库死锁的第一步是做好准备工作。根据SQL Server专家的说法,了解死锁 […]
-
如何使用SQL Server数据库脚本创建数据库?
你可以手工创建SQL Server数据库,但懂得如何设置数据库脚本是十分必要的。本文是执行数据库创建脚本所涉及的步骤。
-
SQL Server 2005支持服务结束 升级何去何从
SQL Server 2005的支持就要结束了,就在2016年4月12日,SQL Server 2005的客户们应该升级了。
-
SQL Server 2005即将终止服务 你准备好了么?
2016年4月12日,微软将正式终止SQL Server 2005相关服务。微软正在终止扩展支持,这意味着不再有新特性更新,什么都没了。