【问题标题】:LINQ to SQL and SqlDependencyLINQ to SQL 和 SqlDependency
【发布时间】:2010-07-21 07:11:30
【问题描述】:

同时使用 SqlDependency 和 LINQ to SQL 是否有任何影响。还是我们必须专门处理一些事情才能使其正常工作?

在我们的应用程序中,我们使用 LINQ to SQL 作为 ORM,业务逻辑位于存储过程中。我们缓存 SP 的输出并创建 SQLDependency。每当 SP 的输出更改时,缓存就会失效。

到目前为止,我们的代码在 Dev、Test 和 QA 中运行良好,但最近它在 QA 中停止运行,并且日志表明错误来自 SqlDependency.Start(ConnStr),它在 Application Start 的 global.asax 文件中执行堵塞。

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

但我不明白,当 SqlDependency.Start() 已经在 Application Start 中执行时,为什么在执行 SP 之后它会抛出异常。

谁能解释一下这个问题?

【问题讨论】:

    标签: sql linq-to-sql sqldependency


    【解决方案1】:

    由于 SQLDependency 依赖于权限 - 服务器上的权限是否发生了变化?

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

    【讨论】:

    【解决方案2】:

    确保所有权限都已正确设置,下面列出了我为使其正常工作而应用的所有必要权限。

    -- 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]
    

    【讨论】:

    • 这个测试用户是什么?用户或数据库
    • 那是需要权限和所有其他属性的用户。
    猜你喜欢
    • 2011-11-18
    • 2011-04-25
    • 1970-01-01
    • 2011-01-27
    • 2011-01-20
    • 1970-01-01
    • 1970-01-01
    • 2011-04-17
    • 1970-01-01
    相关资源
    最近更新 更多