У меня есть триггер, который обращается к другой базе данных. но я получаю сообщение об ошибке:
«Принципал сервера« A »не может получить доступ к базе данных« B »в текущем контексте безопасности»
Где A - это логин пользователя. Затем я установил его для выполнения от имени пользователя, который с одинаковым логином в обеих базах данных (база данных, из которой вызывается триггер, и база данных, указанная в триггере). Однако эта ошибка сохраняется. Я установил для указанной базы данных надежность, но это не сработало.
Также, sa
не пользователь, а логин, но когда я запускаю, триггер выдается из логина sa без какого-либо олицетворения, все работает хорошо; но все ломается, когда я пытаюсь выдать себя за любого пользователя.
Как заставить этот триггер запускаться для всех пользователей, включая тех, у кого нет доступа к моей указанной базе данных
Вам придется предоставить общедоступный доступ ко всем элементам в указанной базе данных, на которые установлен триггер, что является плохой идеей.
В противном случае вам нужно будет предоставить доступ к вашей базе данных, на которую вы ссылаетесь, и любым ее объектам (таблицам, представлениям, хранимым процедурам и т. Д.) Любому логину, который должен использовать триггер.
В качестве альтернативы, если ваш триггер запускается из вызова приложения, вы можете создать логин для приложения, соответствующим образом настроить разрешения в обеих базах данных для этого входа и настроить приложение для подключения от имени этого пользователя. В этом случае вам, конечно же, придется позаботиться о других проблемах безопасности и журналирования на уровне приложения.