Я получаю странное поведение, когда совмещаю олицетворение ссылок на базы данных в SQL Server 2005. Сначала я подключаюсь к серверу базы данных, используя простую аутентификацию SQL Server с помощью Вход 'John'. На этом сервере определена ссылка сервера remote_sqlserver. У меня уже есть привилегии SELECT для mydb на этом сервере. Когда я просто запросить таблицу на БД по этой ссылке сервера:Проблема при изменении контекста (олицетворение) и использовании ссылки на сервер в SQL Server 2005
SELECT count(*)
FROM remote_sqlserver.mydb.dbo.mytable -- Works!
После этого, я стараюсь олицетворения с тем же Логин (не спрашивайте, почему бы один сделать это, я просто экспериментировал;))
EXECUTE AS LOGIN = 'John'
SELECT count(*)
FROM remote_sqlserver.mydb.dbo.mytable -- Error: "Login failed for user: 'John'"
Когда я возвращаюсь, он снова работает:
REVERT
SELECT count(*)
FROM remote_sqlserver.mydb.dbo.mytable -- Works!
у вас есть какие-либо идеи, почему я получаю сообщение об ошибке с олицетворения, хотя тот же Логин может запросить TABL e без олицетворения?
BTW: После «олицетворения как я», если я запрашиваю локальную базу данных (конечно, для которой у меня достаточно прав), я не получаю никаких ошибок. Это происходит только тогда, когда я запрашиваю удаленную БД по серверной ссылке.
Возможно, это была база данных по умолчанию для этого пользователя, которая не права? Я не уверен, поэтому не правильный ответ. – 2009-12-09 13:45:56
Извините, я не понимаю. вы уточните? – ercan