1

SQLDependency Cachingアプリケーションでクエリ通知を使用しようとしていASP.NETます。これらの手順に従って、SQLDependency Cachingをセットアップしました。正常にセットアップできましdbた。ただし、アプリケーションを実行すると、次のエラーが発生します。

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

コードGlobal.asax

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

    }

解決策をグーグルで検索しようとしましたが、何の助けも得られませんでした。

誰でもこれで私を助けることができますか?

何か不足していますか?

4

1 に答える 1

1

ユーザーsysadmin権限を付与するか、または

スキーマalterに許可を与えます。dbo

プロシージャ、関数、スキーマ スコープ オブジェクトなどを作成するには、少なくともALTERターゲット スキーマに対する権限が必要です。TSQL 構文は次のとおりです。

grant alter on schema :: schema_name to  user_name

ユーザーは、通知サービス、キューに対するアクセス許可も持っている必要があります。でユーザー 'John' にアクセス許可を付与するには、次Servicequeue使用します。

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

また、ユーザーは通知をサブスクライブする許可が必要です (これはすでにあなたが行っていると思います)。これを行うには:

GRANT SUBSCRIBE QUERY NOTIFICATIONS TO John

これまでのところ、私が推測できる最後のポイントはSqlDependency、コマンドをセットアップした場合は、必ずそれを実行することです。サーバーでのクエリ サブスクリプションは、コマンドの実行時にのみ発生します。

SqlDataReader reader = command.ExecuteReader();

この投稿はより役立つかもしれません。

于 2013-08-28T07:10:18.297 に答える