zoukankan      html  css  js  c++  java
  • SQL数据库完全复制

    很少摸 Windows 环境下的东西,最近被个 MS SQL Server 的数据库搞得头大。实在不像 MySQL 那样用起来轻车熟路, OrZ ...

    本来以为企业管理器里面既然提供了 DTS 数据导入/导出 的功能,直接使用 DTS 指定源和目标库就可以完全复制数据库到远程服务器上了。结果发现除了表的基本结构和数据,字段约束、键值、默认值等都没过去。最终还是要靠直接磁盘拷贝数据文件了事。

    如果数据库服务可以停下来的话,最快的方法是直接拷贝对应的 .mdf 和 .ldf 文件(在企业管理器选择数据库右键看属性的“数据文件”项确定文件名);然后执行T-SQL命令(比如新的目标数据库名为 test ):

    -- 如果 test 数据库已经存在,需要先把其分离。
    -- 如果已经有应用连接到该数据库的话,使用以下语句强制断开现有连接
    ALTER DATABASE test

     
          SET SINGLE_USER 
          WITH ROLLBACK IMMEDIATE; 
    -- 分离tst数据库
    EXEC sp_detach_db 
          @dbname = 'test',
          @skipchecks = 'true'

    -- 把拷贝出来的 .mdf 文件和 .ldf 文件作为 test 数据库的数据文件挂上去
    EXEC sp_attach_db

     
          @dbname = 'test', 
          @filename1 = 'e:db est.mdf', 
          @filename2 = 'e:db est.ldf'

    -- 如果不想使用原来的 .ldf 文件,也可以单独挂 .mdf 文件
    EXEC sp_attach_single_file_db

     
          @dbname = 'test', 
          @physname = 'e:db est.mdf'

    如果当前数据库处于生产环境不允许关闭服务的话,可以使用 BACKUP / RESTORE 的方法来完成复制工作:

    -- 把数据库名为realdb的数据库备份到指定的磁盘文件
    -- 用 WITH FORMAT 参数对bak文件进行格式化,以便进行完整重写
    BACKUP DATABASE realdb TO DISK = 'E:dbBAK_FOR_realdb.bak' WITH FORMAT
    -- 用 RESTORE FILELISTONLY 命令查看数据库备份文件里面的
    -- 数据文件和日志文件的逻辑名称,用于下一步的命令
    RESTORE FILELISTONLY FROM DISK = 'E:dbBAK_FOR_realdb.bak'

    -- 使用备份文件创建一个新的数据库, realdb_dat 和 realdb_log
    -- 分别是上面使用 RESTORE FILELISTONLY 命令查出的数据文件逻辑
    -- 名称
    RESTORE DATABASE test
        FROM DISK = 'E:dbBAK_FOR_realdb.bak'
        WITH MOVE 'realdb_dat' TO 'E:db est.mdf',
        MOVE 'realdb_log' TO 'E:db est.ldf'
    GO

  • 相关阅读:
    C++:重载前置++/--返回引用,重载后置++/--返回临时对象
    C++:析构函数的调用时机
    C2440 “初始化”: 无法从“std::_Vector_const_iterator<std::_Vector_val<std::_Simple_types<_Ty>>>”转换为“std::_Vector_iterator<std::_Vector_val<std::_Simple_types<_Ty>>>”
    c++ 类成员的初始化顺序
    LNK2019
    用赋值表达式作为bool值
    MonkeyRunner API (Monkeyrunner 运行时必须要关闭appium,否则不会执行任何操作)
    Python 之ConfigParser模块
    APP专项测试4 -- 内存
    APP专项测试4 -- 电量
  • 原文地址:https://www.cnblogs.com/hzpin/p/3926285.html
Copyright © 2011-2022 走看看