SQL数据库完全复制
很少摸 Windows 环境下的东西,最近被个 MS SQL Server 的数据库搞得头大。实在不像 MySQL 那样用起来轻车熟路, OrZ ...
本来以为企业管理器里面既然提供了 DTS 数据导入/导出 的功能,直接使用 DTS 指定源和目标库就可以完全复制数据库到远程服务器上了。结果发现除了表的基本结构和数据,字段约束、键值、默认值等都没过去。最终还是要靠直接磁盘拷贝数据文件了事。
如果数据库服务可以停下来的话,最快的方法是直接拷贝对应的 .mdf 和 .ldf 文件(在企业管理器选择数据库右键看属性的“数据文件”项确定文件名);然后执行T-SQL命令(比如新的目标数据库名为 test ):
-- 如果 test 数据库已经存在,需要先把其分离。
-- 如果已经有应用连接到该数据库的话,使用以下语句强制断开现有连接
ALTER DATABASE testSET 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\test.mdf',
@filename2 = 'e:\db\test.ldf'-- 如果不想使用原来的 .ldf 文件,也可以单独挂 .mdf 文件
EXEC sp_attach_single_file_db@dbname = 'test',
@physname = 'e:\db\test.mdf'如果当前数据库处于生产环境不允许关闭服务的话,可以使用 BACKUP / RESTORE 的方法来完成复制工作:
-- 把数据库名为realdb的数据库备份到指定的磁盘文件
-- 用 WITH FORMAT 参数对bak文件进行格式化,以便进行完整重写
BACKUP DATABASE realdb TO DISK = 'E:\db\BAK_FOR_realdb.bak' WITH FORMAT
-- 用 RESTORE FILELISTONLY 命令查看数据库备份文件里面的
-- 数据文件和日志文件的逻辑名称,用于下一步的命令
RESTORE FILELISTONLY FROM DISK = 'E:\db\BAK_FOR_realdb.bak'-- 使用备份文件创建一个新的数据库, realdb_dat 和 realdb_log
-- 分别是上面使用 RESTORE FILELISTONLY 命令查出的数据文件逻辑
-- 名称
RESTORE DATABASE test
FROM DISK = 'E:\db\BAK_FOR_realdb.bak'
WITH MOVE 'realdb_dat' TO 'E:\db\test.mdf',
MOVE 'realdb_log' TO 'E:\db\test.ldf'
GO
SQL数据库完全复制的更多相关文章
- sql数据库表复制、查看是否锁表
1.不同数据库之间复制表的数据的方法: 当表目标表存在时: insert into 目的数据库..表 select * from 源数据库..表 当目标表不存在时: select * into 目的数 ...
- postgress Sql数据库的复制
1.保证本地可正常执行pg_dump,即就是本地有安装postgress数据库,最好把bin目录添加到环境变量path中2.在命令行中执行如下语句: pg_dump -U zhangsan -h 19 ...
- sql server 本地复制订阅 实现数据库服务器 读写分离(转载)
转载地址:http://www.cnblogs.com/echosong/p/3603270.html 再前段echosong 写了一遍关于mysql 数据同步实现业务读写分离的文章,今天咱们来看下S ...
- sql server 本地复制订阅 实现数据库服务器 读写分离
再前段echosong 写了一遍关于mysql 数据同步实现业务读写分离的文章,今天咱们来看下SQL Server的复制订阅实现数据的读写分离 比起mysql的复制,SQL server 复制相对强大 ...
- 聚焦 SQL 数据库活动异地复制
Tobias Ternstrom US-DS-PM 首席部门项目经理 本文作为一系列业务连续性和灾难恢复文章的开篇,概述了业务连续性的各种场景,然后重点介绍 SQL 数据库高级服务级别提供的活动异地 ...
- SQL Server 跨服务器 不同数据库之间复制表的数据
不同数据库之间复制表的数据的方法: 当表目标表存在时: insert into 目的数据库..表 select * from 源数据库..表 当目标表不存在时: select * into 目的数据库 ...
- sql数据库查询结果字段包含换行符导致复制到Excel发生错位问题的解决
问题描述:在工作过程中,有时会遇到这样的问题,写好sql查询语句在数据库中查询数据,看到行数(比如说是1000行),但是把查询结果复制到Excel里面,却发生了行列错位问题,而导致Excel里面的行数 ...
- 教你使用SQL数据库复制系列(1-7)
SQL Server 复制系列(文章索引) 一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 前言(Introduction) 复制逻辑结构图(Construction) ...
- SQL Server 2012复制教程以及复制的几种模式
简介 SQL Server中的复制(Replication)是SQL Server高可用性的核心功能之一,在我看来,复制指的并不仅仅是一项技术,而是一些列技术的集合,包括从存储转发数据到同步数据到维护 ...
随机推荐
- Spring中的ApplicationContext事件机制
ApplicationContext的事件机制是观察者设计模式的实现,通过ApplicationEvent类和ApplicationListerner接口来实现. 1. 创建EmailEvent pu ...
- java消息推送与接收
package com.zl; import java.net.ServerSocket; import java.net.Socket; import org.apache.commons.mvc. ...
- 使用AJAX完成用户名是否存在异步校验
一.JSP代码: 1.事件触发:onblur 2.编写AJAX代码:向Action中提交,传递username参数 <script> function checkUsername(){ / ...
- 小学了一下css hack
实例讲解: Hack应用情境(一) 适用范围:IE:6.0,IE7.0,IE8.0之间的兼容 实例说明: 使用了渐进识别的方式,从总体中逐渐排除局部.首先,巧妙的使用“\9”这一标记,将IE游览器从所 ...
- window下乌龟git安装和使用
一.安装git for windows 首先下载git for windows客户端http://msysgit.github.io/ 安装过程没什么特别的,不停next就ok了 图太多就不继续了~~ ...
- activeamq启动失败
启动activeamq,启动时控制台显示: INFO: Using java '/usr/bin/java'INFO: Starting - inspect logfiles specified in ...
- node js 调试
npm install -g node-inspector node --debug app.js >重新打开一个窗口 node-inspector & KO! no ...
- 如何在不同编程语言中获取现在的Unix时间戳(Unix timestamp)
Java time JavaScript Math.round(new Date().getTime()/1000)getTime()返回数值的单位是毫秒 Microsoft .NET / C# ep ...
- 关于rand()与srand()函数
rand函数功能为获取一个伪随机数(伪随机数的概念下面会有介绍). 一.函数名: rand(); 二.声明: int rand(); 三.所在头文件: stdlib.h 四.功能: 返回一个伪随机数. ...
- winform 控件(2)
1.picturebox:图片(属性)sizemide:调整图片 [出现在form的下方]2.imagelist--图片集(在form下方显示)有索引号,记住索引号对应的图片代码:pictureBox ...