2012-01-06 3 views

ответ

7

Без получения более подробной информации, это трудно дать прямые примеры, но вот основная идея:

Во-первых, за пределами хранимой процедуры, хост-сервер (сервер хранимая процедура будет на) должен знать о втором сервере, включая (возможно) информацию для входа.

На главном сервере запустите хранимую процедуру sp_addlinkedserver. Это только должно быть сделано однажды:

exec sp_addlinkedserver @server=’(your second server)‘; 

Если вам необходимо предоставить информацию для входа на этот второй сервер (например, процесс не может войти с теми же учетными данными, которые используются в исходной базе данных соединение), сделайте это с sp_addlinkedsrvlogin хранимая процедура:

exec sp_addlinkedsrvlogin @rmtsrvname=’(your second server)‘,@useself=false, @rmtuser=’yourusername‘, @rmtpassword=’yourpassword‘; 

Затем, в хранимой процедуре, вы можете выбрать таблицы, на втором сервере:

SELECT table1.* 
FROM table1 
INNER JOIN [secondserver].[database].[schema].[table] AS table2 ON 
    table1.joinfield = table2.joinfield 
1

Прежде чем присоединяться к таблицам, вы должны сначала связать два сервера. Как только они связаны, вы можете просто использовать приведенный ниже запрос и заменить сервер, базу данных & имена таблиц.

Не забудьте выполнить ниже SQL в DB2:

EXEC sp_addlinkedserver DB1 
GO 

-- below statement connects sa account of DB2 to DB1 
EXEC sp_addlinkedsrvlogin @rmtsrvname = 'DB1', @useself = 'false', @locallogin = 'sa', @rmtuser = 'sa', @rmtpassword = 'DB1 sa pwd' 
GO 

SELECT a.columns 
FROM DB1.database_name.dbo.table_name a 
INNER JOIN DB2.database_name.dbo.table_name b 
ON a.columnId = b.columnId 
GO 

Связывание серверов - http://msdn.microsoft.com/en-us/library/ms188279.aspx

1

1. Проверьте, чтобы увидеть, если у вас есть какие-либо связанные с использованием серверов exec sp_helpserver

2. Если ваш сервер не возвращается, то это не Linked, что означает, что вам нужно его добавить. В противном случае перейти к шагу 3.

Для Sql Server 2008 R2, перейдите Server Object > Linked Servers > Add new Linked Server

Или

exec sp_addlinkedserver @server='ServerName'; 

3. Подключение к вторичному серверу как так ...

exec sp_addlinkedsrvlogin 
@rmtsrvname='ServerName' 
, @useself=false 
, @rmtuser='user' 
, @rmtpassword='Password'; 

4. Теперь вы можете присоединиться к таблицам для двух разных серверов.

SELECT 
    SRV1.* 
FROM 
    DB1.database_name.dbo.table_name SRV1 
     INNER JOIN DB2.database_name.dbo.table_name SRV2 
     ON SRV1.columnId = SRV2.columnId 
GO 
Смежные вопросы