2008-09-16 112 views
28

我想將數據從一個服務器的數據庫移植到另一個服務器的數據庫。 這些數據庫都在不同的mssql 2005服務器上。 複製可能不是一個選項,因爲目標數據庫是以[時間間隔]爲基礎從頭開始生成的。跨服務器SQL

Preferebly我會做類似

insert * 
from db1/table1 
into db2/table2 
where rule1 = true 

很明顯,連接憑據將somehwere走在這個腳本。

回答

33

我認爲你想要做的是創建一個鏈接服務器按照this MSDN文章。然後,您可以選擇使用4部分組成的對象名稱,如:

Select * From ServerName.DbName.SchemaName.TableName 
+0

有點晚了,但我現在才重新審視這個問題和是的,這看起來像是我的問題的答案。雖然現在我知道我的問題應該是我選擇的答案的問題。所有變得有點複雜... – 2009-12-15 12:41:56

0

您可以使用數據轉換服務來完成這項工作嗎?這提供了各種各樣的螺栓連接工具來完成這種事情。

你可以從微軟的網站 here

+0

正如你可能知道,SSIS是SQL Server中的「新」 DTS 2005+ – Galwegian 2008-09-16 08:53:42

1

是SQL Server集成服務(SSIS)的選項下載SQL Server 2005的功能包?如果是這樣,我會用它。

1

你是從一臺服務器從情侶對錶的數據庫的全部內容轉移到另一個或只是一些數據?

對於這兩種選擇,SSIS都會完成這項工作,特別是如果您打算定期進行轉賬。

如果你只是想將一些數據從1個或2個表複製和喜歡在SQL Management Studio中使用TSQL那麼你可以使用鏈接的服務器做的pelser的建議

  1. 設置源數據庫服務器爲鏈接服務器
  2. 使用下面的語法來訪問數據
select columnName1, columnName2, etc from serverName.databaseName.schemaName.tableName
1

嗯,我不與複製您的評論表示贊同。您可以通過從頭開始創建數據庫來啓動複製,並且可以通過更新可用客戶端數據庫或簡單地重新創建數據庫來控制更新。

自動複製將通過自動管理密鑰和關係來簡化您的工作。

我認爲最簡單的做法是通過MSSQL Server Studio啓動快照複製,獲取T-SQL相應的腳本(即發佈和訂閱的相應T-SQL指令),並將這些腳本記錄爲SQL代理作業列表中的作業或作爲複製文件夾中的複製作業。

1

你可以去鏈接的服務器路由。

你只是不能使用select *進入你必須做一個插入選擇。

如果您沒有使用經驗,我會避免複製,因爲如果打破了可能很難修復,並且如果管理不當可能會出現其他問題。

保持簡單,特別是在數據庫很小的情況下。

6

您可以使用打開數據源就像這樣:

EXEC sp_configure 'show advanced options', 1 
GO 
RECONFIGURE 
GO 

EXEC sp_configure 'Ad Hoc Distributed Queries', 1 
GO 
RECONFIGURE 
GO 


SELECT * 
FROM OPENDATASOURCE('SQLOLEDB', 
        'Data Source=<Ip Of Your Server>; 
        User ID=<SQL User Name>;Password=<SQL password>').<DataBase name>.<SchemaName>.<Table Or View Name> 

Go 
+0

很酷,不知道這存在。另一方面,http://technet.microsoft.com/en-us/library/ms179856.aspx表示必須有明確的註冊。 – 2013-09-09 11:20:25

-1
CREATE VIEW newR1 
AS 
SELECT * from OPENQUERY ([INSTANCE_NAME], 'select * from DbName.SchemaName.TableName') 
+0

這確實也需要鏈接服務器,所以基本上這只是在幾年前已經提出的相同建議之後的另一種查詢。 – Magier 2017-07-11 08:04:30