Sql-Server
將查詢結果從一台伺服器移動到另一台伺服器上的另一個表
將一個伺服器中的查詢結果移動到另一台伺服器上的另一個表時,我有哪些選擇?數據包含約 400.000 行,因此不會很快。(它們都是 SQL Server 2008 R2)
謝謝大家。
一種選擇是通過 SQLCLR使用SqlBulkCopy類。您可以自己編寫程式碼,也可以直接下載免費版本的SQL#(我是它的作者),其中包含一個名為的儲存過程,該過程
DB_BulkCopy
封裝了此功能。在任何一種情況下,都需要給程序集一個PERMISSION_SET
ofEXTERNAL_ACCESS
。如果使用 SQL# 儲存過程,您將執行類似於以下的操作:
DECLARE @MyQuery NVARCHAR(MAX); SET @MyQuery = N'select some stuffs; -OR- EXEC SomeProc;'; EXEC SQL#.DB_BulkCopy --@SourceType = N'MSSQL', --@SourceConnection = N'Context Connection = true;', @SourceQuery = @MyQuery, @DestinationConnection = N'Data Source=(local); Integrated Security=true; Initial Catalog=tempdb;', -- CHANGE!! @DestinationTableName = N'SchemaName.TableName', @BatchSize = 3000, @NotifyAfterRows = 1000, @TimeOut = 1000 -- seconds --@ColumnMappings = N'', --@BulkCopyOptionsList = N'TableLock|UseInternalTransaction' -- Optional; see descripton below --@RowsCopied = @Rows OUTPUT
@BulkCopyOptionsList值:
TableLock
= 在大容量複製操作期間獲取大容量更新鎖。如果未指定,則使用行鎖。UseInternalTransaction
= 指定時,每批大容量複製操作都將在一個事務中發生。- SQL# 手冊中描述的其他選項。