我需要將大量數據從舊數據庫中的兩個表中移動到新數據庫中的幾個不同表中。數據庫是SQL Server 2005,位於同一個盒子和sql服務器實例上。有人告訴我,如果我試圖完成所有事務,那麼事務日誌將會填滿。有沒有辦法禁用每個表的事務日誌?如果不是,這樣做的好方法是什麼?光標會做到嗎?這只是一次性轉換。如何將舊數據庫中的大量數據遷移到新的數據庫
0
A
回答
1
1
使用SQL Server Management Studio中的導入/導出數據嚮導。這裏的
- 多麼正確的對象資源管理器中單擊數據庫
- 選擇任務 - >導入數據
- 完成「選擇源」窗口
- 完成「選擇目標」窗口
- 選擇
- 「從一個或多個表或視圖複製數據」選擇你的表
不要使用遊標,這將永遠!
另一種替代方法是在循環中執行插入操作,以限制單個事務中包含的行數(從而防止事務日誌增長太多)。
SET ROWCOUNT 10000
WHILE EXISTS(SELECT * FROM tblA LEFT JOIN tblB on tblA.ID = tblB.ID WHERE tblB.ID IS NULL)
BEGIN
BEGIN TRAN
INSERT tblB
SELECT * FROM tblA LEFT JOIN tblB on tblA.ID = tblB.ID WHERE tblB.ID IS NULL
COMMIT
PRINT CAST(@@ROWCOUNT AS VARCHAR) + ' rows have been inserted.'
END
SET ROWCOUNT 0 --to reset
0
一個非常大的INSERT INTO db2.t SELECT * FROM db1.t
確實可以填滿你的事務日誌 - 因爲它需要大量的空間,在提交事務之前。但這個大小取決於很多東西 - 行數,行的大小,交易日誌的大小等。
我知道這可能聽起來很愚蠢,但取決於你的環境風險(以及它的真實可能性填寫交易日誌),我可能會爲此付出代價。你所冒的所有風險都是事務日誌的填滿,你的事務回滾以及其他數據庫用戶稍微感到不便,直到這個空間再次被釋放。如果是開發或新的數據庫,人們可能不會注意到。
你可以將它分成「合理」大小的批量(同樣,這取決於)。如果這太難了(沒有好的分區策略),請使用SSIS並執行傳輸並設置批量提交限制。
無論在哪種情況下,如果操作中斷,顯然您只會對已提交的事務產生ACID。 有時根據實際需要多長時間(取決於索引和唯一鍵可用性)來確定哪些行已傳輸,哪些不是,更容易斷開目標表並重新嘗試整個傳輸。
相關問題
- 1. 如何將舊的MySQL數據庫遷移到新的WordPress數據庫中
- 2. 如何使用Microsoft Access將舊數據庫遷移到新數據庫中
- 3. 如何生成從舊數據庫遷移到新數據庫的SQL腳本?
- 4. 用超過舊數據庫值遷移新數據庫
- 5. 將大數據遷移到新數據庫
- 6. Rails 4.從舊數據庫遷移(一些)舊數據庫數據到現有的數據庫DataBase
- 7. Rails/postgresql將數據從數據庫遷移到新創建的數據庫
- 8. 數據庫數據遷移
- 9. Mysql大數據庫遷移
- 10. 如何將大型數據庫遷移到新服務器
- 11. 如何將數據從oracle數據庫遷移到mysql數據庫?
- 12. 從XML文件中的大數據遷移到數據庫
- 13. 數據遷移到SQLSERVER數據庫
- 14. 將舊記錄遷移到新數據庫
- 15. MySQL:如何將舊數據移動到數據庫
- 16. Liquibase建議將生產數據從舊數據庫模式遷移到新數據庫模式嗎?
- 17. 如何從CodeIgniter數據庫遷移到Laravel數據庫
- 18. 如何從MySQL數據庫遷移到WordPress格式數據庫
- 19. 數據庫遷移
- 20. 數據庫遷移
- 21. 數據庫遷移
- 22. 數據庫遷移
- 23. 將數據庫遷移到雲中
- 24. 如何將ArcGis Online數據遷移到外部數據庫?
- 25. 如何將數據從內存數據庫遷移到核心數據中的NSSQLiteStoreType數據庫?
- 26. 將關係數據庫中的數據遷移到NoSQL
- 27. 將SharePoint數據庫遷移到另一個數據庫
- 28. Django 1.8將本地postgres數據庫遷移到heroku數據庫
- 29. 將專有CMS數據庫遷移到Joomla數據庫
- 30. 將SQL Server數據庫遷移到SQL Compact數據庫
在SSMS表/對象副本將默認爲在一個事務中所做的操作。您可以保存包並在SSIS中打開它,並在目的地上修改它以設置批量提交。 – 2010-03-24 17:05:24
那麼你發佈的第二種方法是在事務日誌中創建10000個條目然後清除它們? (對不起,我不太瞭解事務日誌的工作原理。) – adam0101 2010-03-24 18:18:55
在默認配置下,事務日誌自動增長以適應在事務處於打開狀態時(如插入期間)積累的數據量。如果我們在每10000行後執行一次事務,那麼事務日誌一次只需要保存一行10000行。基本上,我們將插入分成更小的塊。 – MikeZ 2010-03-24 19:11:13