Service Broker 按照帮助一步一步来居然也不成功,求指导

badiku 2008-07-03 02:36:05
Service Broker
一直想试一下,结果还不大好弄。

看了一下自带的帮助,很详细。

有3种,
1、单个数据库中的会话.
2、完成数据库之间的会话
3、实例之间的会话

前两种由于不涉及到网络传输都很简单,照着做就OK了,不照着做自己搞也没什么问题。

但最后一种,就是在不同的SQL服务器
之间进行Service Broker 消息传递就很复杂了,涉及路由等的配置
自己没搞出来,一步一步按帮助也没搞清楚,每一步都做了,就是收不到消息

也没什么错误提示,
也不知道在哪儿查原因。



有人试过吗?有什么注意事项。


ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHS/sqltut9/html/137d8f44-62e2-4a77-84c8-966054ad3531.htm


本教程适用于熟悉数据库概念和 Transact-SQL 语句但刚开始使用 Service Broker 的用户。 教程通过演示如何在位于不同数据库引擎实例中的两个数据库之间生成和运行简单的会话,帮助新用户入门。

学习内容
本教程建立在您在完成数据库之间的会话中所学任务的基础上。 在本教程中,您将学习如何配置会话以使其在数据库引擎的两个实例之间运行。

在本教程中执行的步骤与您在“完成数据库之间的会话”教程中执行的步骤相同,但存在以下不同:

两个数据库将位于数据库引擎的不同实例中。


您将学习如何创建 Service Broker 端点和路由以在两个实例之间建立网络连接。


先前的教程不在网络上传输消息。 因此,它们使用数据库引擎权限来帮助防止人们在未经授权的情况下擅自访问消息。 在第 3 课中,您将学习如何创建证书和远程服务绑定以加密网络上的消息。


在本教程中,包含发起方数据库的数据库引擎的实例称为发起方实例。 包含目标数据库的实例称为目标实例。

本教程共分为六节课:

第 1 课:创建目标数据库
在本课中,您将创建目标数据库和所有与发起方数据库没有依赖关系的对象。 这包括端点、主密钥、证书、用户、消息类型、约定、服务和队列。

第 2 课:创建发起方数据库
在本课中,您将创建发起方数据库及其端点、主密钥、证书、用户、路由、远程服务绑定、消息类型、约定、服务和队列。

第 3 课:完成目标会话对象
在本课中,您将创建与发起方数据库有依赖关系的目标对象。 这包括证书、用户、路由和远程服务绑定。

第 4 课:开始会话
在本课中,您将启动会话并从发起方向目标发送一条请求消息。

第 5 课:接收请求和发送答复
在本课中,您将在目标服务处收到请求消息并向发起方发回一条答复消息。

第 6 课:接收答复和结束会话
在本课中,您将在发起方服务处收到答复消息并结束本次会话。

要求
若要完成本教程,您应熟悉 Transact-SQL 语言以及如何使用 SQL Server Management Studio 中的 Transact-SQL 查询编辑器。

必须安装数据库引擎的两个实例。 如果这两个实例安装在不同的计算机中,请始终从同一台计算机中 Management Studio 的副本连接到每个实例。 例如,不要从目标计算机中的 Management Studio 副本连接到发起方实例。

您必须在这两个实例中都授权同一个登录名。 在这两个实例中,该登录名必须为 sysadmin 固定服务器角色的成员,或具有运行此教程所需的下列权限:

ALTER ANY LINKED SERVER。


CREATE ENDPOINT。


CREATE DATABASE、CREATE ANY DATABASE 或 ALTER ANY DATABASE 中的至少一个权限。


用于运行两个数据库引擎实例的 Windows 帐户在另一个实例中也必须是有效的登录名。

这两个系统必须安装了以下程序:

任意版本的 SQL Server 2005,但只有一个实例可以为 SQL Server Express Edition。


SQL Server Management Studio 或 Management Studio Express。


Internet Explorer 6 或更高版本。


这两个系统的防火墙必须配置为启用与 UDP 端口 1434 和 TCP 端口 1433 和 4022 的连接。 使用外围应用配置器工具来确保这两个实例都允许远程连接。 使用 SQL Server 配置管理器确保在两台计算机中都运行了 SQL Server Browser 服务。
...全文
594 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
fanchaoyun 2011-08-29
  • 打赏
  • 举报
回复
现顶起。
hengfly 2010-08-24
  • 打赏
  • 举报
回复
在吗?我最近也在搞Service Broker,不过问题跟你的不同。我的是【An error occurred while receiving data: '10054(远程主机强迫关闭了一个现有的连接。)'.】可能路由设定有问题。有空大家讨论下啊。
yeyong_2005 2010-08-10
  • 打赏
  • 举报
回复
V-V,看看什么东东
polarisqill 2009-03-24
  • 打赏
  • 举报
回复
我也出现证书过期这个问题,不知怎么解决?
怎么没人回帖了呢?
qizhengsheng 2008-07-15
  • 打赏
  • 举报
回复
现在不看这个.
badiku 2008-07-14
  • 打赏
  • 举报
回复
subject expiry_date start_date thumbprint
Initiator Certificate 2010-12-31 00:00:00.000 2008-07-03 15:08:47.000 0x36524B79456D0467482D1DC9C52BC0DBE528C1BF
Target Certificate 2010-12-31 00:00:00.000 2008-07-03 15:08:08.000 0xBD5548CEFB57CC2F6B2F7F980B14BE9FB57424C2
2008-07-14 16:41:30.543
badiku 2008-07-14
  • 打赏
  • 举报
回复
日期应该不是问题吧,反正都是用脚本现场生成的


subject expiry_date start_date thumbprint
Initiator Certificate 2010-12-31 00:00:00.000 2008-07-03 15:08:47.000 0x36524B79456D0467482D1DC9C52BC0DBE528C1BF
Target Certificate 2010-12-31 00:00:00.000 2008-07-03 15:08:08.000 0xBD5548CEFB57CC2F6B2F7F980B14BE9FB57424C2

2008-07-14 16:35:21.763



subject start_date thumbprint
Initiator Certificate 2010-12-31 00:00:00.000 0x36524B79456D0467482D1DC9C52BC0DBE528C1BF
Target Certificate 2010-12-31 00:00:00.000 0xBD5548CEFB57CC2F6B2F7F980B14BE9FB57424C2

2008-07-14 16:39:01.827
M1CR0S0FT 2008-07-10
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 M1CR0S0FT 的回复:]
select * from sys.certificate
select getdate()

结果是什么?
[/Quote]

纠正一下:应该是select * from sys.certificates,接收方和发送方都需要查
hery2002 2008-07-10
  • 打赏
  • 举报
回复
证书过期?
还没有解决啊~
M1CR0S0FT 2008-07-10
  • 打赏
  • 举报
回复
select * from sys.certificate
select getdate()

结果是什么?
badiku 2008-07-10
  • 打赏
  • 举报
回复
没注意看,原来最后一列是错误原因的说。

最后一列说是证书过期了?明明是刚才新建的证书。打开证书看也没有过期的啊
The security certificate bound to database principal (Id: 5) has expired. Create or install a new certificate for the database principal.
M1CR0S0FT 2008-07-07
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 badiku 的回复:]
telnet 没问题。
对SERVICE授权SEND,上面代码有的。
查看sys.transmission_queue这个上面代码有,有记录。就是没发出去吧,发出去了应该就没有了。
没有绑定什么SP,只是测试一下发送接收。
[/Quote]
如果在sys.transmission_queue里看不到出错的信息,也就是错误列为空,那么需要同时开启PROFILE去跟踪SERVICEBROKER事件(注意,接收和发送方都需要同时跟踪),一般
错误会出现在里面,然后根据具体错误,再做判断。
badiku 2008-07-07
  • 打赏
  • 举报
回复
telnet 没问题。
对SERVICE授权SEND,上面代码有的。
查看sys.transmission_queue这个上面代码有,有记录。就是没发出去吧,发出去了应该就没有了。
没有绑定什么SP,只是测试一下发送接收。
M1CR0S0FT 2008-07-04
  • 打赏
  • 举报
回复
你不说那么多,你就说你想实现什么,你的代码是什么,出的错误是什么,然后再具体分析.
M1CR0S0FT 2008-07-04
  • 打赏
  • 举报
回复
我们公司用了2年,我负责了2年.
hery2002 2008-07-04
  • 打赏
  • 举报
回复
没有用过~
还处于烟酒截断
badiku 2008-07-04
  • 打赏
  • 举报
回复
broker 到底有人用吗?感觉资料挺少的。语焉不详的说。
M1CR0S0FT 2008-07-04
  • 打赏
  • 举报
回复
1:你把传输层的安全交互验证也采用证书验证。
2:创建完端点后,你需要验证端点是否可以互相TELENT。
3:对绑定对方证书的LOGIN授权其CONNECT端点的权限。
4:你没有对SERVICE授权SEND,肯定发不起消息。
5:上面都做了,你先发送消息,把目标方的队列绑定SP取消,然后查看消息是否到达队列。
6:如果消息未到达队列,你查看sys.transmission_queue里是否有记录。



先这样修改,然后再帮你诊断,明天回公司,我发一篇文章给你,上面也是配置代码步骤,按照那上面的配置(其实也是我说的这样)
M1CR0S0FT 2008-07-04
  • 打赏
  • 举报
回复
SSB的东西调试起来非常烦琐,通常一般是查看sys.transmission_queue的最后那列,我想不起列名了,如果为空,那么就
需要开启PROFILE去跟踪,错误消息是会出现在跟踪里,这点是它不好的地方,2008引用了一个SSBDIAG的DOS诊断工具,但使用过
觉得还是不爽,是有那么点用,总之,SSB中,一个错误可能有很多原因造成,你的代码我还未看,空了帮你看。
badiku 2008-07-04
  • 打赏
  • 举报
回复
想实现的:就是两台不同的计算机之间的SQL BROKER消息传递
(不是同一计算机上的不同数据库,那个不需要配路由)

代码:上面都贴出来了。

关键是错误提示:什么也没有,全都正常执行。

问题:就是没有数据接收

加载更多回复(2)

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧