2011-08-05 108 views
2

我有一個成功使用SQL Server 2008標準版的SqlDependency的應用程序。但是,如果我將連接字符串切換到SQL Server 2008 express(使能Broker),它將停止工作。對SQL Server 2008 Express的SQL依賴

我不確定它是否是SQL Server Express特定的,但我應該遵循哪些步驟來找出問題的原因?

更新。通過「停止工作」我的意思是通知不是由SqlDependency提出的

回答

5

瞭解SQL依賴關係是如何工作的,我建議你讀The Mysterious Notification。要排除故障,請按照正常的Troubleshooting Dialogs步驟操作。典型的罪魁禍首的確如您所找到的文章中所述,Service Broker消息傳遞所需的EXECUTE AS環境。你會很容易地看到從transmission_status的通知消息是sys.transmission_queue,並將數據庫所有者更改爲有效登錄(ALTER AUTHORIZATION ON DATABASE::[<dbname>] TO [sa])將解決它。但是,可能還有其他問題,我的鏈接中的故障排除步驟將幫助您找到它們。

3

正如@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

+0

但是,「僅客戶端」是什麼意思? – SiberianGuy

+0

這意味着另一個實例上的服務代理可以將消息發送到Express,但是Express本身不能發送消息 - 無論是在實例內部還是外部到其他實例。 –

+1

-1 Express Edition完全支持Service Broker。唯一的限制是兩個Express實例無法首先通過較高版本交換不通過路由的消息。 SQL依賴關係和查詢通知在SQL Express中工作得很好 –