2012-01-06 77 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

在加入表之前,您必須先連接兩臺服務器。一旦他們被鏈接,你可以使用下面的查詢和替換服務器,數據庫&表名。

記住在DB2中執行SQL如下:

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'; 

連接到輔助服務器是這樣的...

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 
相關問題