Активна ли роль приложения в соединении с сервером SQL?
Как я могу проверить, активна ли (и какая) роль приложения для соединения (объект DbConnection) с сервером sql?
Моя проблема в том, что все объекты базы данных имеют доступ, предоставленный для моей роли приложения, но при выполнении оператора select я получаю ошибку "access denied". Я использую один объект подключения с активированной ролью приложения, но боюсь, что либо EntityFramework, либо контейнер DI создает другой объект DbConnection из-за ошибки конфигурации.
1 ответ
Решение
Doh. Перечитывая документацию по sp_setapprole, я вижу этот пример кода:
DECLARE @cookie varbinary(8000);
EXEC sp_setapprole 'Sales11', 'fdsd896#gfdbfdkjgh700mM'
, @fCreateCookie = true, @cookie = @cookie OUTPUT;
-- The application role is now active.
SELECT USER_NAME();
-- This will return the name of the application role, Sales11.
Таким образом, казалось бы, что доступ USER_NAME()
сделает свое дело.