0

我已经使用本地数据库成功地在我的 c# 应用程序上使用了查询通知。但是,将连接字符串更改为我的实际数据库(不是本地数据库)会导致错误。请注意,两个数据库是相同的 + 队列和服务等在两个数据库上都是相同的。我所做的只是交换连接字符串 ==> 导致无法创建队列订阅。如果我缺少有关本地与远程数据库依赖关系的内容,请告知。

代码引发异常的部分:

private void Handle_OnChange(object sender, SqlNotificationEventArgs e)
    {

        if (e.Type != SqlNotificationType.Change)
            throw new ApplicationException("Failed to create queue notification subscription!");
4

1 回答 1

1

在花了一整天试图解决这个问题之后,我弄清楚了是什么原因造成的。在切换 OnChange 事件引发的所有 SqlNotificationEventArgs.Info 后,我注意到一个 SqlNotificationInfo.Options 响应,这表明 SQL 服务器“选项集”不正确,因为它运行在 SQL 服务器 2000(80) 兼容级别!选项集应如下所示:

ANSI_NULLS ON
ANSI_PADDING ON
ANSI_WARNINGS ON
CONCAT_NULL_YIELDS_NULL ON
QUOTED_IDENTIFIER ON
NUMERIC_ROUNDABORT OFF
ARITHABORT ON

设置这些选项后,Sqldependency 按预期工作。

于 2014-05-13T06:24:10.507 回答