2013-08-28 4 views
1

J'essaie d'utiliser SQLDependency Caching avec des requêtes de requête dans mon application ASP.NET. J'ai suivi these steps to set up SQLDependency Caching. J'ai réussi à configurer le db avec succès. Toutefois, lorsque j'exécute mon application, j'obtiens l'erreur suivante.La mise en cache de SQLDependency ne fonctionne pas

Cannot find the specified user 'owner'. 
Cannot find the queue 
SqlQueryNotificationService-6c3ae823-a678-4ed2-8b97-561b5f2561ee', 
because it does not exist or you do not have permission. 
Invalid object name 
SqlQueryNotificationService-6c3ae823-a678-4ed2-8b97-561b5f2561ee'. 

code Global.asax

void Application_Start(object sender, EventArgs e) 
    { 
     // Code that runs on application startup 
     System.Data.SqlClient.SqlDependency.Start(ConfigurationManager.ConnectionStrings["McdConn"].ToString()); 

    } 

j'ai essayé de Google la solution, mais je ne pouvais pas obtenir de l'aide.

Quelqu'un peut-il m'aider avec ceci?

Ai-je raté quelque chose?

Répondre

1

Soit vous pouvez donner à l'utilisateur sysadmin droits OU

fournissent alter l'autorisation au schéma dbo. Pour créer une procédure, une fonction, un objet de schéma, etc., vous avez besoin d'au moins ALTER autorisation sur le schéma cible.

Voici la syntaxe TSQL,

grant alter on schema :: schema_name to user_name 

L'utilisateur doit également avoir les autorisations sur le service de notification, Queues. Pour accorder l'autorisation à l'utilisateur John 'sur les Service et queue utilisation:

GRANT SEND on service::SqlQueryNotificationService to John 
GRAND RECEIVE on SqlQueryNotificationService_DefaultQueue to John 

Aussi l'utilisateur doit recevoir l'autorisation de souscrire à la notification (Ceci est déjà fait par vous, je suppose) Pour ce faire, utilisez:.

GRANT SUBSCRIBE QUERY NOTIFICATIONS TO John 

un dernier point jusqu'à présent je peux deviner pour aider est que si vous avez configuré SqlDependency sur une commande, alors assurez-vous d'exécuter les abonnements it.Query sur le serveur se produire que sur l'exécution de la commande.

SqlDataReader reader = command.ExecuteReader(); 

Cette post peut s'avérer plus utile.

+0

Je vous remercie pour l'aide J'ai modifié la permission de schéma et le définir à mon utilisateur DB.Il a fait le tour! Merci – freebird

+0

Je n'ai plus de problèmes mais mon cache est toujours nul parce que j'utilise 'SqlDataAdapter '? – freebird

+0

Content de savoir que cela fonctionne maintenant. Je vais également vérifier la même chose avec SqlDataAdapter. –

Questions connexes