2010-07-21 5 views
3

Y at-il des implications de l'utilisation de SqlDependency et de LINQ to SQL ensemble? Ou devons-nous prendre soin de certaines choses spécialement pour les faire fonctionner correctement?LINQ to SQL et SqlDependency

Dans notre application, nous utilisons LINQ to SQL comme ORM et la logique métier est dans les procédures stockées. Nous mettons en cache la sortie des SP et créons SQLDependency. Chaque fois que la sortie des SP change, le cache est invalidé. Notre code jusqu'ici fonctionnait correctement dans Dev, Test et QA mais récemment il a cessé de fonctionner dans QA et les journaux suggèrent que l'erreur provient de SqlDependency.Start (ConnStr) qui est exécuté dans le fichier global.asax dans Application Démarrer le bloc. L'erreur est la suivante: Message: Lors de l'utilisation de SqlDependency sans fournir de valeur d'option, SqlDependency.Start() doit être appelé avant l'exécution d'une commande ajoutée à l'instance SqlDependency.

Mais je ne comprends pas que lorsque SqlDependency.Start() est déjà exécuté dans Application Start, pourquoi lance-t-il une exception après l'exécution des SP?

Quelqu'un peut-il jeter quelque lumière sur ce problème?

Répondre

2

Comme SQLDependency dépend des autorisations, les autorisations ont-elles changé sur le serveur?

(Ils ne devraient pas avoir probablement - mais ils peuvent!)

+0

Pouvez-vous s'il vous plaît élaborer sur la partie des autorisations, ce sera très utile et merci pour la réponse. –

+0

Généralement, la configuration est décrite ici: http://msdn.microsoft.com/en-us/library/a52dhwx7(VS.80).aspx Ou voir la section «Required Database Permissions» dans http://blogs.msdn.com/b/dataaccess/archive/2005/09/27/474447.aspx – Tobiasopdenbrouw

1

assurez-vous que toutes les autorisations sont définies correctement, ci-dessous la liste de toutes les autorisations nécessaires que j'appliqués pour le faire fonctionner.

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

Qu'est-ce que testuser? utilisateur ou base de données –

+0

c'est l'utilisateur qui a besoin de la permission et de tous les autres attributs. – apprich