2010-07-21 127 views
3

是否有将SqlDependency和LINQ一起使用到SQL中的任何含义。或者我们必须专门照顾一些事情,以使它们正常工作?LINQ to SQL和SqlDependency

在我们的应用程序中,我们使用LINQ to SQL作为ORM,业务逻辑位于存储过程中。我们缓存SP的输出并创建SQLDependency。只要SP的输出发生变化,缓存就会失效。

我们的代码到目前为止在Dev,Test和QA中工作正常,但最近它停止在QA中工作,并且日志表明错误来自SqlDependency.Start(ConnStr),它在应用程序中的global.asax文件中执行开始块。

错误如下: 消息:当使用SqlDependency时未提供选项值时,必须在执行添加到SqlDependency实例的命令之前调用SqlDependency.Start()。

但我不明白,当SqlDependency.Start()已经在应用程序中执行启动它为什么会执行SPs后抛出异常。

任何人都可以对这个问题有所了解吗?

回答

2

由于SQLDependency是权限相关的 - 服务器上的权限是否更改?

(他们可能不应该有 - 但他们可能!)

+0

请您详细说明一下权限的部分,这将会非常有帮助,谢谢您的回复。 – 2010-07-21 07:42:48

+0

一般情况下,将其设置在这里描述:http://msdn.microsoft.com/en-us/library/a52dhwx7(VS.80).aspx 或请参阅“所需的数据库权限”中 部分HTTP:/ /blogs.msdn.com/b/dataaccess/archive/2005/09/27/474447.aspx – Tobiasopdenbrouw 2010-07-21 08:43:49

1

确保所有的权限设置是否正确,下面的是我能让它工作的所有必要的权限列表。

-- Permissions 
GRANT CREATE PROCEDURE to [testUser] 
GRANT CREATE QUEUE to [testUser] 
GRANT CREATE SERVICE to [testUser] 
---- 

GRANT REFERENCES on CONTRACT::[http://schemas.microsoft.com/SQL/Notifications/PostQueryNotification] 
    to [testUser] 

GRANT RECEIVE ON QueryNotificationErrorsQueue TO [testUser] 
GRANT SUBSCRIBE QUERY NOTIFICATIONS TO [testUser] 


GRANT CONTROL ON SCHEMA::[dbo] TO [testUser] 
GRANT IMPERSONATE ON USER::DBO TO [testUser] 
+0

什么是testuser?用户或数据库 – 2012-08-06 13:27:58

+0

这是需要权限和所有其他属性的用户。 – apprich 2012-10-10 08:35:21