не удается получить доступ к таблице данных, расположенной на другом сервере, из хранимой процедуры на одном сервере SQL Server 2008 R2 Management Studio

#sql #sql-server #sql-server-2008 #stored-procedures #windows-7

#sql #sql-сервер #sql-server-2008 #хранимые процедуры #windows-7

Вопрос:

Мне нужно получить доступ к таблице данных, расположенной на другом сервере (target_server), из хранимой процедуры на одном сервере (server1) SQL server 2008 R2 management studio.

Я добавил целевой сервер:

 EXEC sp_addserver 'target_server' , 'DATA ACCESS', TRUE
EXEC sp_serveroption 'target_server' , 'DATA ACCESS', TRUE
  

Но, когда я запускаю хранимую процедуру для доступа к целевому серверу, я получил эту ошибку:

 Login failed for user 'my_login_user_name'.
  

Пароль целевого сервера отличается от пароля для входа на мой server1. Но я успешно вошел в нее и добавил ее в Management Studio с правильным паролем.

Почему я не могу получить доступ к целевому серверу из хранимой процедуры?

Ответ №1:

sp_addserver немного устарел (в 2008 году, я полагаю, он включен только для обратной совместимости с sql server 2000). Если я не ошибаюсь … используйте комбинацию SP_addlinkedserver (аналогичное использование как sp_addserver) для настройки соединения. (отредактируйте, чтобы добавить…ваш исходный sp_addserver уже должен работать, нет смысла повторять этот шаг, если вы действительно этого не хотите)

Затем используйте SP_addlinkedsrvlogin для определения доступа пользователя:

 sp_addlinkedsrvlogin [ @rmtsrvname = ] 'rmtsrvname' 
 [ , [ @useself = ] 'TRUE' | 'FALSE' | NULL ] 
 [ , [ @locallogin = ] 'locallogin' ] 
 [ , [ @rmtuser = ] 'rmtuser' ] 
 [ , [ @rmtpassword = ] 'rmtpassword' ] 
  

Комментарии:

1. Если вы предпочитаете графику текстовой строке… SSMS позволяет вводить строки в мастере, подобном setup. Под вашим сервером вы увидите Объекты сервера >> связанные серверы. Вкладка Безопасность позволит вам определить отдельный вход / проход

2. Это определяется учетной записью пользователя, которую вы используете для входа на удаленный сервер. IE. Если вы хотите получить доступ только для чтения к этому связанному серверу, затем создайте учетную запись только для чтения на связанном сервере.

3. Не уверен, сможете ли вы … вам нужно найти кого-нибудь с системным администратором, который может создавать / изменять учетные записи пользователей.