Sql-Server

將(數百個)表從一台伺服器複製到另一台伺服器(使用 SSMS)

  • January 15, 2016

我有數百個(目前是 466 個,但不斷增長)表,我必須從一台伺服器複製到另一台伺服器。

我以前從來沒有這樣做過,所以我完全不確定如何處理它。所有表格的格式相同:Cart<Eight character customer number>

這是一個更大的項目的一部分,我將所有這些Cart<Number>表合併到一個Carts表中,但這完全是一個完全不同的問題。

有沒有人有我可以用來複製所有這些表的最佳實踐方法?兩台伺服器上的數據庫名稱相同,如果有幫助的話。正如我之前所說,我有sa帳戶,所以我可以做任何必要的事情來從 A 到 B 獲取數據。兩台伺服器也在同一個伺服器場中。

您可以使用 SQL Server Management Studio 的“導出數據”任務。右鍵點擊 SSMS 中的數據庫,選擇任務,然後選擇“導出數據”。它將啟動一個互動式嚮導,允許將表從一台伺服器複製到另一台伺服器,儘管您必須自己重新創建索引。該嚮導會創建一個臨時 SSIS 包(儘管您也可以選擇保存它)並且速度相對較快。

這是一種快速而骯髒的方法,它只需要一個連結伺服器,在每個方向上,具有足夠的權限、排序兼容性和啟用數據訪問。您在源連結伺服器上執行它以生成將在目標連結伺服器上執行的動態 SQL。

DECLARE @sql NVARCHAR(MAX) = N'';

SELECT @sql += N'SELECT * INTO [database].dbo.' + QUOTENAME(name)
 + N' FROM [source_linked_server].[database].dbo.' + QUOTENAME(name) + N';'
FROM sys.tables
WHERE name LIKE N'Cart[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]';

PRINT @sql; -- this will only print 8K, enough to spot check
--EXEC [destination_linked_server].master.sys.sp_executesql @sql;

引用自:https://dba.stackexchange.com/questions/122582