问题标签 [service-broker]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2931 浏览

sql-server - 除非服务帐户在两端都是管理员,否则使用 Windows 身份验证的服务代理连接失败

拓扑:

机器 A - Windows Server 2008 - SQL 2008 R2 Dev SQL Server 以 mydomain\user1 身份运行

机器 B -Windows 7 -SQL 2008 R2 Dev SQL Server 以 mydomain\user1 身份运行

我已在任一端授予服务帐户到任一 SQL 服务器上端点的连接权限。如果我将 mydomain\user1 添加到机器管理员组的任一端,则可以毫无问题地建立连接。如果我从这些组中删除它,我会收到以下消息:

连接握手失败。操作系统调用失败:(8009030c) 0x8009030c(登录尝试失败)。州 67。

任何帮助表示赞赏。我们真的不确定所需的必要最低权利。我们计划最终将其迁移到生产环境,我不希望 sql 服务以本地计算机管理员身份运行。顺便说一句,我已经让我的服务器管理员参与其中,据他们所知,SPN 似乎设置正确。

我在这里的 MSDN 论坛上问了同样的问题。

0 投票
1 回答
8093 浏览

sql-server-2005 - 对远程服务器的访问被拒绝,因为当前的安全上下文不受信任

我有一个服务代理,它调用存储过程 sp_dequeue queue --> ACTIVATION ( STATUS = ON, MAX_QUEUE_READERS = 1, PROCEDURE_NAME = sp_dequeue, EXECUTE AS 'Username' ); 在我的 sp_dequeue 中,我将记录插入到链接服务器中......所以当我从 magmnt 工作室调用 sp_dequeue 时,它​​工作正常。但是当它通过服务代理自动调用时,我收到此错误消息:“访问远程服务器被拒绝,因为当前的安全上下文不受信任。”。

在我的链接服务器属性中,我检查了“使用此安全约束进行制作”并提供了 oracle 用户 ID 和密码,我还添加了到 oracle 服务器的“用户名”映射。(oracle/SQL 的用户名和密码都不同)我为此搜索了错误尝试了几乎所有组合。请帮助我解决这个问题。使用 Sql server 2005 和 oracle 10g

0 投票
0 回答
570 浏览

sql-server-2005 - 删除 SQL Service Broker 队列很慢

我们有一个在单个数据库中使用 SQL Server 服务代理的系统。该数据库使用高安全模式和见证进行镜像。

我们有一个路由应用程序,它从队列接收消息并将这些消息转发到节点的队列。在每 8 个节点上,我们有另一个应用程序接收该消息,对其进行处理并将状态发送回路由队列。

由于某种未知原因,该应用程序没有看到她的队列已经存在于系统中,并一次又一次地重新创建了该队列。现在我在系统中有 20000 个队列和 20000 个关联服务,而不是 8 个。

我开始删除它们,但它真的很慢(删除 50 个队列需要 +/- 3 分钟)。这通常这么慢吗?镜像会干扰 SSB 吗?是否有另一种方法可以删除所有这些队列?

谢谢

0 投票
1 回答
3064 浏览

sql-server - 如何快速关闭 Microsoft SQL Server Service Broker 的所有元素?

我们有一个应用程序,它使用 Service Broker 在 SQL Server 中创建队列和服务来处理数据库通信。该应用程序使用这些服务并正确发送/接收消息,但我现在想测试这个应用程序的初始化阶段(它创建代理以及在幕后工作的存储过程)。基本上,我需要以某种频率删除代理元素,而且它现在真的很慢。

如果有帮助,我可以更改应用程序创建代理元素的方式 - 但这个问题与关闭所有内容更相关。

我用来关闭代理的代码是:

这会在“drop service [//XF/DBNotifyService-Initiator]”上挂起一段时间。是否有更快的方法来关闭和删除服务代理的全部或部分元素?

谢谢!

==更新==

好的,我花了一些时间,但下面的答案确实解决了问题。我想为其他可能遇到问题的人澄清一下。

我的应用程序正确关闭了所有服务、队列、合同和消息。关闭服务需要很长时间,因为应用程序中的一个错误有一堆开放的对话。正在创建这些对话,用于发送消息,然后以以下方式结束:

'with cleanup' 位仅关闭对话的本地端(想想,它允许服务器清理任何可能在另一端出错的对话)。它不会关闭发送服务的另一端,因此对话保持打开状态。正常对话应该结束:

这修复了应用程序错误。但是,我在数据库中有几百万次中断的对话。我可以像普通人一样删除数据库,或者我可以尝试弄清楚如何关闭它们。要一一关闭它们:

每个连接需要几毫秒(对于数百万来说非常慢)。如果我想快速关闭它们,请使用下面的答案并运行修改后的命令:

with rollback immediate 使所有连接都断开,而不允许它们确保提交。文档说“所有未完成的事务都将被回滚,并且与 AdventureWorks2008R2 示例数据库的任何其他连接都将立即断开。” http://msdn.microsoft.com/en-us/library/bb522682.aspx

这些服务现在正在迅速下降,错误和打开的连接都消失了。

0 投票
1 回答
584 浏览

sql-server-2005 - Are there other reasons for service broker to be disabled than a RESTORE DATABASE

We have a production database where service broker was disabled. We have a profiler that logs every backup / restore operation. I cannot find any restore operation in its trace. Are there any other reasons than a database restore for service broker to be disabled ?

Note that this database is mirrored using high-availability and a witness server. In the error log, I can find

Can mirorring failure disable service broker ? Or maybe is it the opposite : mirorring fails because service broker is disabled ?

Any suggestion to solve this issue would be greatly appreciated !

0 投票
1 回答
4047 浏览

sql-server - SQL Server Broker Service 目标传输队列问题

我已经在两个不同的实例中实现了两个 SSB。它们是基于异步触发器的数据推送模式。

我使用的是SQL Server Enterprise 2008 R2,版本信息如下

我的 SQL 版本是 Microsoft SQL Server Management Studio 10.0.4064.0 Microsoft Analysis Services 客户端工具 10.0.4064.0 Microsoft 数据访问组件 (MDAC) 6.1.7601.17514 Microsoft MSXML 3.0 4.0 5.0 6.0 Microsoft Internet Explorer 9.0.8112.16421 Microsoft .NET Framework 2.0.50727.5446 运行系统 6.1.7601

  1. 我的队列RETENTION设置为off

  2. Sender Queue 和 sys.TransmissionQueue

  3. 目标队列,但目标 sys.transmissionqueue包含我发送的5000 条消息

  4. 数据插入@Target DB 被锁定。“当我使用nolock选择时,会出现5000 条记录

  5. 探查器显示

@发件人

经纪人:对话 STARTED_OUTBOUND

经纪人:Conversation CONVERSING

Broker:消息分类

Broker:远程消息确认

经纪人:对话组

@接收者

经纪人:对话 DISCONNECTED_OUTBOUND

经纪人:对话组

Broker:消息分类

Broker:远程消息确认

Broker:Message Undeliverable 由于无法按时发送,此消息已被丢弃。状态:1

  1. SSBDIAGNOSE没有显示错误

我已经使用 Rusanu 的博客条目来解决问题,但我认为我的情况有所不同!

希望任何人都可以提供帮助:)

0 投票
1 回答
1179 浏览

sql-server-2005 - SQL Server Service Broker 能否与 Web 服务器 (IIS) 应用程序中的服务进行对话?

有没有办法与 Web 服务器中的应用程序组件进行通信。我的应用程序由 IIS 7.0 上的 Web 应用程序和 SQL Server 2005 上的数据库组成。我有几个卫星服务正在对数据库进行轮询,我想用 SQL 数据库本身触发的 Web 服务替换这些服务。

Service Broker 可以这样做吗?它可以发送与 Web 服务器中的服务(即 ASP.Net 页面、Web 服务,甚至 WCF 服务)的对话吗?

编辑:

有什么方法可以让 SQL 服务器调用 Web 应用程序组件(即 Web 服务、ASP.Net 页面等...)。我需要知道。

0 投票
2 回答
8058 浏览

sql-server - msdb.dbo.sp_send_dbmail 不在存储过程中执行

我使用以下代码设置死锁监控:

http://weblogs.sqlteam.com/mladenp/archive/2008/07/18/Immediate-deadlock-notifications-without-changeing-existing-code.aspx

它工作正常。我遇到的问题是 msdb.dbo.sp_send_dbmail 似乎不起作用。如果我从会话中手动执行,它可以正常工作,但是在存储过程中,会发生以下错误:

2011-08-23 16:42:45.28 spid219s 在队列 Wayne.dbo.DeadLockNotificationsQueue 上运行的已激活 proc [dbo].[usp_ProcessNotification] 输出以下内容:'从队列 DeadLockNotificationsQueue 接收 Service Broker 消息时出错。数据库名称:韦恩;错误号:229;错误消息:对象“sp_send_dbmail”、数据库“msdb”、模式“dbo”的执行权限被拒绝。

我还运行了以下内容:

EXEC msdb.dbo.sp_addrolemember @rolename = 'DatabaseMailUserRole' ,@membername = '';

以我的会员名登录,但似乎没有帮助。

我需要做什么来纠正这个问题?

谢谢。

韦恩。

0 投票
2 回答
4126 浏览

sql - SQL Server 服务代理 - 消息超时

我正在研究 sql server service broker 作为我们应用程序的消息处理技术。

在我们的场景中,从一个客户端应用程序 (WPF) 发送的消息需要在服务代理中排队,其他客户端应用程序 (android) 将接收这些消息。消息是时间敏感的,需要在被发布到队列后的“X”分钟(例如 2 分钟)内被接收者接收,如果此时无法接收,消息需要过期并从队列中删除队列。

有没有办法告诉服务代理在“x”分钟后超时消息?

编辑:添加了我用来测试的脚本。

0 投票
1 回答
944 浏览

c# - SQL Server 通知 - 我的 OnChange 不会从 Windows 服务触发

我想利用 SQL Server 通知在 Windows 服务中的数据库中捕获插入/更新事件。我正在尝试使用 SQLDependency 对象。MSDN 文章使这看起来非常简单。所以我创建了一个小示例应用程序来尝试一下。当对表中的数据进行更改时,它不会引发看起来的 OnChange 事件。有人可以告诉我我错过了什么吗?谢谢!我的代码示例如下。