sql server中備份數據的幾種方式


  當我們在寫sql腳本要對數據表中的數據進行修改的時候,為了防止破壞數據,通常在開發前都會對數據表的數據進行備份,當我們sql腳本開發並測試完成后,再把數據恢復回來。

目前備份數據,我常用的方法有以下幾種。

  1. 臨時表
  2. 導出腳本
  3. 復制數據到新表

臨時表

使用臨時表雖然簡單方便,但是它很不安全,如果數據庫重啟數據就丟失了,所以一般不建議用。使用臨時表的代碼。

USE TSQLFundamentals2008;
GO

-- 局部臨時表
IF OBJECT_ID('tempdb.dbo.#MyOrderTotalsByYear','U') IS NOT NULL DROP TABLE dbo.#MyOrderTotalsByYear;
GO

-- 創建局部臨時表
SELECT YEAR(orders.orderdate) AS orderyear,SUM(orderDetails.qty) AS qty 
INTO dbo.#MyOrderTotalsByYear
FROM Sales.Orders AS orders
LEFT JOIN Sales.OrderDetails AS orderDetails ON orders.orderid = orderDetails.orderid
GROUP BY YEAR(orders.orderdate);
View Code

導出腳本

當數據量小的時候,我們可以使用sql server自帶的導出腳本功能將數據導出成sql腳本,但是當數據量大的時候(比如前段時間我導出一個表,50多萬條記錄,生成的腳本有1個多GB),生成的腳本體積很大,無法在SSMS中打開執行。雖然可以使用osql執行,不過速度很慢。

復制數據到新表

備份使用select * into [目標表] from [源表],恢復的時候insert into [源表] select * from [目標表],不過要注意主鍵是否自增,如果是自增的話,恢復的時候最好在INSERT INTO之前加上SET IDENTITY_INSERT [表名] ON語句。

所以總結起來,復制數據到新表的方式比較方便和可靠。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM