SQL Server2014 SP2新增的数据库克隆功能
创建测试库
--创建测试数据库 create database testtest use testtest go --创建表 create table testtest(id int ,name varchar(20)) --插入数据 insert into testtest select 1,'sdfsdf' --创建存储过程 create proc testproc as select 1
创建克隆数据库的命令形式
DBCC CLONEDATABASE (source_database_name, target_database_name) –– Default CLONE WITH SCHEMA, STATISTICS and QUERYSTORE metadata. DBCC CLONEDATABASE (source_database_name, target_database_name) WITH NO_STATISTICS –– SCHEMA AND QUERY STORE ONLY CLONE DBCC CLONEDATABASE (source_database_name, target_database_name) WITH NO_QUERYSTORE –– SCHEMA AND STATISTICS ONLY CLONE DBCC CLONEDATABASE (source_database_name, target_database_name) WITH NO_STATISTICS,NO_QUERYSTORE –– SCHEMA ONLY CLONE
开始创建克隆库
DBCC CLONEDATABASE (testtest, testtestclone) 已开始对“testtest”执行数据库克隆操作,目标为“testtestclone”。 已完成对“testtest”执行数据库克隆操作。克隆数据库为“testtestclone”。 数据库“testtestclone”是克隆数据库。克隆数据库应仅用于诊断目的,不得用于生产环境。 DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
创建成功之后,克隆库是只读状态的,并且库里所有表都没有数据
存储过程也会克隆过来,在克隆库打开存储过程定义
克隆库也会在数据目录下创建mdf和ldf文件
可以看到,克隆库其实跟源库没有太大差别,只是克隆库里面没有业务数据
利用克隆库诊断数据库问题,把克隆库进行数据库备份或分离数据库然后发给SQL Server专家就可以帮你诊断了,非常方便
--备份克隆库 backup database [testtestclone] to disk='D:DBBackup esttestclone.bak' with compression,stats=5 --还原克隆库 USE [master] RESTORE DATABASE [testtestclone] FROM DISK = N'D:DBBackup esttestclone.bak' WITH FILE = 1, MOVE N'testtest' TO N'D:DataBase esttest_843330487.mdf', MOVE N'testtest_log' TO N'D:DataBase esttest_log_82742540.ldf', NOUNLOAD, STATS = 5 GO --分离克隆库 USE [master] GO EXEC master.dbo.sp_detach_db @dbname = N'testtestclone' GO
只要对方还原你的数据库就可以对你的数据库问题进行诊断了
如有不对的地方,欢迎大家拍砖o(∩_∩)o
本文版权归作者所有,未经作者同意不得转载。