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语句。

所以总结起来,复制数据到新表的方式比较方便和可靠。

原文地址:https://www.cnblogs.com/mcgrady/p/4447857.html