Вставить в другую базу данных с помощью триггера и роли приложения

В настоящее время у меня возникла проблема с реализацией триггера на сервере базы данных SQL Server 2019.

У меня есть триггер в таблице A1 базы данных DB_A, он должен выполнять вставку в таблицу B1 базы данных DB_B, когда данные вставляются в таблицу A1 базы данных DB_A.

Обе базы данных находятся в одном экземпляре.

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

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

Msg 916, уровень 14, состояние 2, процедура XXX, строка 6 [Batch Start Line 1]
Принципал сервера «XXXX» не может получить доступ к базе данных «XXX» в текущем контексте безопасности.

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

1 ответ

Вы должны предоставить роли для обеих баз данных пользователю, тогда только вы можете вставлять данные в обе базы данных

Другие вопросы по тегам