加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQLServer 2014 SP2实现克隆数据库

发布时间:2020-12-12 13:50:08 所属栏目:MsSql教程 来源:网络整理
导读:官方文档:点击打开链接 参考文档:点击打开链接?(注:DBCC CLONEDATABASE ?(source_database_name,target_database_name) WITH NO_STATISTICS,NO_QUERYSTORE 后面两个参数都用不了的, SQL Server 2016 sp1 才可以用 ) 首先看下, 是否已安装 SP2 补丁:

官方文档:点击打开链接

参考文档:点击打开链接?(注:DBCC CLONEDATABASE ?(source_database_name,target_database_name) WITH NO_STATISTICS,NO_QUERYSTORE
后面两个参数都用不了的, SQL Server 2016 sp1 才可以用 )


首先看下, 是否已安装 SP2 补丁:

SELECT @@VERSION
/*
Microsoft SQL Server 2014 (SP2) (KB3171021) - 12.0.5000.0 (X64) 
	Jun 17 2016 19:14:09 
	Copyright (c) Microsoft Corporation
	Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)
*/
安装SP2补丁注意:

1. ?不需要先安装SP1;

2. ?安装时要先停止SQL Server服务, 关闭SSMS。


克隆数据库:

DBCC CLONEDATABASE('test','test_clone')
/*
已开始对“test”执行数据库克隆操作,目标为“test_clone”。
已完成对“test”执行数据库克隆操作。克隆数据库为“test_clone”。
数据库“test_clone”是克隆数据库。克隆数据库应仅用于诊断目的,不得用于生产环境。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
*/

很快(几秒)就能得到一个与原库一样的库了, 不同的是没有数据。

但表、索引、触发器、视图、存储过程等数据库对象一样不少。

还有一个方面就是:克隆过来的数据库是只读的,要可写还得将其改成可读写的。


USE [master]
GO
ALTER DATABASE [test_clone] SET  READ_WRITE WITH NO_WAIT
GO

不过, 看了一下表的存储, 还是不对, 因为没有数据的情况下居然还有行数……

执行了更新表的统计信息和整个库的统计信息都没有用:

--更新表统计信息
UPDATE STATISTICS tableName
--更新整个库所有可用的统计信息
EXEC sys.sp_updatestats

重新生成聚集索引:

--结果复制出来执行即可
SELECT 'ALTER INDEX ['+i.name+'] ON '+OBJECT_NAME(i.[object_id])+' REBUILD' AS ExecuteSQL 
FROM sys.indexes AS i WHERE i.type_desc='CLUSTERED'
AND EXISTS(SELECT * FROM sys.tables AS t WHERE t.[object_id]=i.[object_id])
这下就正常了。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读