我有一個成功使用SQL Server 2008標準版的SqlDependency的應用程序。但是,如果我將連接字符串切換到SQL Server 2008 express(使能Broker),它將停止工作。對SQL Server 2008 Express的SQL依賴
我不確定它是否是SQL Server Express特定的,但我應該遵循哪些步驟來找出問題的原因?
更新。通過「停止工作」我的意思是通知不是由SqlDependency提出的
我有一個成功使用SQL Server 2008標準版的SqlDependency的應用程序。但是,如果我將連接字符串切換到SQL Server 2008 express(使能Broker),它將停止工作。對SQL Server 2008 Express的SQL依賴
我不確定它是否是SQL Server Express特定的,但我應該遵循哪些步驟來找出問題的原因?
更新。通過「停止工作」我的意思是通知不是由SqlDependency提出的
瞭解SQL依賴關係是如何工作的,我建議你讀The Mysterious Notification。要排除故障,請按照正常的Troubleshooting Dialogs步驟操作。典型的罪魁禍首的確如您所找到的文章中所述,Service Broker消息傳遞所需的EXECUTE AS環境。你會很容易地看到從transmission_status
的通知消息是sys.transmission_queue
,並將數據庫所有者更改爲有效登錄(ALTER AUTHORIZATION ON DATABASE::[<dbname>] TO [sa]
)將解決它。但是,可能還有其他問題,我的鏈接中的故障排除步驟將幫助您找到它們。
正如@Remus指出的,我基於誤導性文檔的假設是錯誤的:SQL Server Express在某種程度上確實支持Service Broker,儘管許多聯機源聲明它不支持SSB。儘管如此,儘管如此,搜索可能會產生隨之而來的對話。
看來SqlDependency依賴於Query Notifications。查詢通知反過來依賴於Service Broker。 Service Broker在SQL Server Express中不受支持。此頁面沒有列出查詢通知明確:
http://msdn.microsoft.com/en-us/library/cc645993(SQL.100).aspx
但是,從那裏,你可以看到,業務代理,通過快遞,因爲只有客戶支持,並從以下頁面,你可以看到,業務代理是一個依賴(沒有雙關語意):
http://msdn.microsoft.com/en-us/library/ms130764(v=SQL.100).aspx
但是,「僅客戶端」是什麼意思? – SiberianGuy
這意味着另一個實例上的服務代理可以將消息發送到Express,但是Express本身不能發送消息 - 無論是在實例內部還是外部到其他實例。 –
-1 Express Edition完全支持Service Broker。唯一的限制是兩個Express實例無法首先通過較高版本交換不通過路由的消息。 SQL依賴關係和查詢通知在SQL Express中工作得很好 –