我想將一列的值複製到SQL Server中的另一列。該操作需要在整個整個DB之間執行,其具有200M行。我的查詢語法是:SQL Server中從一列到另一列的數據批量複製
UPDATE [Net].[dbo].[LINK]
SET [LINK_ERRORS] = [OLD_LINK_ERRORS]
但是,很快我耗盡事務日誌並且查詢中止。什麼是批量發起這個最好的方法?
謝謝,
我想將一列的值複製到SQL Server中的另一列。該操作需要在整個整個DB之間執行,其具有200M行。我的查詢語法是:SQL Server中從一列到另一列的數據批量複製
UPDATE [Net].[dbo].[LINK]
SET [LINK_ERRORS] = [OLD_LINK_ERRORS]
但是,很快我耗盡事務日誌並且查詢中止。什麼是批量發起這個最好的方法?
謝謝,
多個更新可能工作。
update dbo.LINK
set LINK_ERRORS=OLD_LINK_ERRORS
where ID between 1 and 1000000
update dbo.LINK
set LINK_ERRORS=OLD_LINK_ERRORS
where ID between 1000001 and 2000000
等等
更新200M行是不是一個好主意。
您既可以選擇所有的數據到一個新的表和字段LINK_ERRORS在選擇複製,
select *, OLD_LINK_ERRORS as LINK_ERRORS into LINK_tmp from LINK
GO
exec sp_rename LINK, LINK_bkp
GO
exec sp_rename LINK_tmp, LINK
GO
drop table LINK_bkp
,或者如果你打算做的下一件事就是空出原始OLD_LINK_ERRORS列,你可以做這樣的事情:
sp_rename 'LINK.OLD_LINK_ERRORS', 'LINK_ERRORS', 'COLUMN'
GO
ALTER TABLE LINK ADD OLD_LINK_ERRORS <data type>
GO
我會考慮在SSIS這樣做,你可以很容易地控制批(事務)的大小,並採取批量操作SSIS提供的優勢。當然,如果你需要一個程序化的解決方案,這可能不起作用。這將是一個非常微不足道的SSIS操作。
什麼是SSIS?對不起,如果這聽起來微不足道。 – Neel 2010-09-20 18:38:20
@ user350129:SQL Server集成服務 - http://www.microsoft.com/sqlserver/2008/en/us/integration.aspx – 2010-09-20 19:09:36
我必須問:爲什麼? – 2010-09-20 18:56:53