2015-07-10 2 views
0

Я получаю следующее сообщение об ошибке, уставившись SqlDependencySqlDependency Разрешение вопрос

Не удается найти указанный пользователем «владельца». Не удается найти очередь 'SqlQueryNotificationService-dfb11997-c69e-4e3b-a640-29cdf4c3e9fa', , потому что она не существует или у вас нет разрешения. Недействительный название объекта 'SqlQueryNotificationService-dfb11997-c69e-4e3b-a640-29cdf4c3e9fa'.

Я уже дал следующие разрешения. Не знаете, какие еще разрешения предоставить команде sql/user. Цените свое время и помочь

GRANT CREATE PROCEDURE to [SqlUser] 
GRANT CREATE QUEUE to [SqlUser] 
GRANT CREATE SERVICE to [SqlUser] 
GRANT REFERENCES on 
CONTRACT::[http://schemas.microsoft.com/SQL/Notifications/PostQueryNotification] 
to [SqlUser] 
GRANT VIEW DEFINITION TO [SqlUser] 
GRANT SELECT to [SqlUser] 
GRANT SUBSCRIBE QUERY NOTIFICATIONS TO [SqlUser] 
GRANT RECEIVE ON QueryNotificationErrorsQueue TO [SqlUser] 
GRANT ALTER ON SCHEMA::dbo TO [SqlUser] 
GRANT CONTROL ON SCHEMA::[dbo] TO [SqlUser]; 
GRANT IMPERSONATE ON USER::DBO TO [SqlUser]; 
ALTER USER [sqluser] WITH DEFAULT_SCHEMA=[SqlUser] 
GO 

ответ

0

Я предполагаю, что схема [SqlUser] не существует.

  1. Если вы используете следующее (что вы вообще не должны)

    GRANT ALTER ON SCHEMA::dbo TO [SqlUser] 
    GRANT CONTROL ON SCHEMA::[dbo] TO [SqlUser]; 
    GRANT IMPERSONATE ON USER::DBO TO [SqlUser]; 
    

    , то вам не нужно:

    ALTER USER [sqluser] WITH DEFAULT_SCHEMA=[SqlUser] 
    

    , так как вы должны держать схему по умолчанию, как dbo так что очередь будет по-прежнему создаваться в рамках этой схемы.

  2. В противном случае, вам не нужны гранты на dbo и вы могли бы просто использовать: все равно будет нужен

    CREATE SCHEMA [SqlUser] AUTHORIZATION [SqlUser] 
    ALTER USER [SqlUser] WITH DEFAULT_SCHEMA = [SqlUser] 
    

Все другие гранты:

GRANT REFERENCES ON CONTRACT::[http://schemas.microsoft.com/SQL/Notifications/PostQueryNotification] TO [SqlUser]; 

    -- for Start() 
    GRANT CREATE PROCEDURE to [SqlUser]; 
    GRANT CREATE QUEUE to [SqlUser]; 
    GRANT CREATE SERVICE to [SqlUser]; 
    GRANT VIEW DEFINITION TO [SqlUser]; 

    -- for subscribe 
    GRANT SUBSCRIBE QUERY NOTIFICATIONS TO [SqlUser]; 
    GRANT RECEIVE ON QueryNotificationErrorsQueue TO [SqlUser]; 
0

Для люди, которые пытаются найти решение этой проблемы: Сначала я проверю, является ли SqlUser учетной записью, которую вы используете для подключения к приложению?

Если да, то другой возможной причиной может быть то, что у пользователя нет разрешения IMPERSONATE для владельца активированной процедуры, и вам необходимо предоставить разрешение владельца.

См. Здесь answer.

Смежные вопросы