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

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

  • 相关阅读:
    mysql事务
    mysql查询操作教程
    mysql建表约束
    mysql数据库增删改查
    node服务器响应静态资源
    windows下golang版本的升级
    Linux开机错误
    redis命令
    nginx内置变量
    nginx日志
  • 原文地址:https://www.cnblogs.com/mcgrady/p/4447857.html
Copyright © 2020-2023  润新知