Sql-Server
備份單個表
我需要截斷 Sql server 中包含大約 250GB 數據的表,但在截斷之前我需要對此進行備份,它可能是 csv 文件或其他模式。最好的方法是什麼。
我建議使用BCP 實用程序。從該文件中:
將表行複製到數據文件中(使用受信任的連接)
基本的
此範例創建一個名為 StockItemTransactions_character.bcp 的數據文件,並使用字元格式將表數據複製到其中。
在命令提示符處,輸入以下命令:
bcp WideWorldImporters.Warehouse.StockItemTransactions out D:\BCP\StockItemTransactions_character.bcp -c -T
只是為了提供通過 BCP 或 SSIS 導出到文件的替代方法,您可以將此數據導出到新數據庫(如Denis Rubashkin在評論中所建議的那樣),然後創建該數據庫的備份。
與將表導出到 .csv 或其他一些外部平面文件相比,將數據導出到輔助數據庫的好處如下:
- 更容易保護
- 更小的數據足跡
- 可能更快
- 在我看來,BCP 存在一個主要問題,那就是它是串列執行的。我不知道通過 BCP 甚至 SSIS 將數據並行導出到平面文件的方法。
SELECT INTO
在 SQL Server 2014 及更高版本中執行語句,或INSERT INTO tbl WITH (TABLOCK) SELECT
在 SQL Server 2016 或更高版本中執行語句將並行將此數據載入到備份數據庫中。250GB 是相當大的數據量,根據您的系統,並行操作可以顯著減少完成操作所需的時間。¹ - 列儲存索引是 SQL 2014 - SQL 2016 CU9(13.0.2216.0 或13.0.2218.0)企業版獨有的,並且在 SQL Server 2016 SP1 及之後的標準版本中可用。