SqlDependency работает с моей тестовой базой данных, но не с реальной базой данных - PullRequest
0 голосов
/ 03 апреля 2019

Я пытаюсь заставить SqlDependency работать с существующей базой данных и моим проектом на C #. Я протестировал мой код C # в тестовой базе данных, и он работает, как и ожидалось. Когда я пытаюсь использовать существующую базу данных, я не передаю событие в мой C # на событие OnChange, когда в базу данных добавляется новая запись данных. поскольку он работает с моей тестовой базой данных, я изолировал проблему до существующей базы данных.

Я включил брокера:

ALTER DATABASE [dbName] SET ENABLE_BROKER

Я создал очередь и службу:

CREATE QUEUE NewEventQueue;
CREATE SERVICE NewEventService ON QUEUE NewEventQueue 

([http://schemas.microsoft.com/SQL/Notifications/PostQueryNotification])

Я не могу предоставить разрешения, потому что я уже такой же. Когда я запускаю следующий запрос, он говорит мне, что я не могу предоставить, отказать или отменить разрешения для sa:

GRANT SUBSCRIBE QUERY NOTIFICATIONS TO "dbo"

(Кстати, «SELECT CURRENT_USER» возвращает результат «dbo»)

Когда я запускаю проект C # и делаю запрос подписки на базу данных, под System Queues и System Services, появляется сообщение: -dbo.SqlQueryNotificationService

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

1 Ответ

0 голосов
/ 03 апреля 2019

Эта статья ответила на мой вопрос https://ardalis.com/sqldependency-issue-resolved

Я использовал следующий запрос, чтобы установить владельца базы данных:

выберите имя, suser_sname (owner_sid) из базы данных sys.d

Несмотря на то, что для Владельца базы данных было установлено значение sa, уже запущенный, следующий запрос решил проблему:

ИЗМЕНЕНИЕ АВТОРИЗАЦИИ НА БАЗЕ ДАННЫХ :: dbNameTO sa;

...