Активна ли роль приложения в соединении с сервером 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() сделает свое дело.

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