Я настроил двух пользователей внутри базы данных SQL Server 2008 Express: red
и round
.SQL Server 2008 с проверкой подлинности Windows: вход в Windows сопоставляется с несколькими пользователями БД одновременно.
red
карты к локальной группе Windows,MACHINE\Red
.
red
является членом ролей по умолчанию по умолчаниюdb_datawriter
.round
относится к локальной группе Windows по имениMACHINE\Round
.
round
является членом ролей по умолчанию по умолчаниюdb_denydatawriter
.
В обеих локальных группах Windows есть локальный пользователь Windows MACHINE\tomato
.
Из моего приложения .NET теперь я пытаюсь загрузить данные из базы данных в MACHINE\tomato
(и подключившись к базе данных с использованием проверки подлинности Windows). Это не работает, предположительно из-за членства пользователя SQL round
в роли db_denydatawriter
.
Итак, Как мой учет в Windows может быть сопоставлен двум пользователям SQL Server одновременно?
-- MACHINE\Red ---------- red ------- db_datawriter
-- /
-- MACHINE\tomato
-- \
-- MACHINE\Round ------- round ------ db_denydatawriter
И как получилось, что когда я получить текущий логин через
SELECT CURRENT_USER -- I could also use SYSTEM_USER or ORIGINAL_LOGIN()
-- with exactly the same result, it seems
я вернусь MYMACHINE\tomato
, а не red
или round
?
* @ cyberwiki *, спасибо за ваш ответ. Я искал документацию по этому вопросу на MSDN, но в основном нашел только туманные, беглые кусочки. Можете ли вы порекомендовать хороший ресурс по этой теме? – stakx