2010-07-19 125 views
7

如果我想在SQL Server中運行這種查詢,我怎麼能從一個連接到另一個服務器的同一查詢中進行查詢?將數據從一臺服務器插入另一臺?

我試着添加「[ServerName1]」。之前「[DatabaseName1]。[dbo] ...」和「[ServerName2]」。之前「[DatabaseName2]。[dbo] ...」,但似乎沒有工作。

INSERT INTO [DatabaseName1].[dbo].[TableName] 
      ([FieldName]) 
    SELECT [FieldName] FROM [DatabaseName2].[dbo].[TableName] 

這可能嗎?

回答

9

是你對象的名稱像所有的剩餘之前使用服務器名稱:

myserver.mydatabase.dbo.mytable 

但是你首先要建立鏈接的服務器。在BOL中查找鏈接的服務器。

+0

什麼是「BOL」? – 2017-03-17 14:53:16

+1

聯機叢書 - SQL Server幫助文件。 – HLGEM 2017-03-23 13:42:27

8

如果您有adhoc distributed queries啓用,您可以使用OPENDATASOURCE。設置鏈接服務器是另一種選擇。不確定每種方法的優缺點。

INSERT INTO [DatabaseName1].[dbo].[TableName] 
SELECT FieldName 
FROM OPENDATASOURCE('SQLNCLI', 
    'Data Source=Server\InstanceName;Integrated Security=SSPI') 
    .DatabaseName2.dbo.TableName 
+0

僅供參考此功能必須啓用:http://stackoverflow.com/questions/14544221/how-to-enable-ad-hoc-distributed-queries – VoteCoffee 2015-06-01 15:37:11

2

要做到這一點,最好的方法是在兩者之間創建一個「鏈接服務器」。您將需要適當的權限來執行此操作。

然後,它只是使用您的鏈接服務器名稱訪問數據庫的問題。

例:[linkedserver] .databasename.dbo.tablename

要創建linkedserver,轉到服務器對象 - >右鍵單擊鏈接服務器 - >點擊 '新鏈接服務器' 上。

相關問題