执行DBCC CLONEDATABASE报12605错误无法创建快照数据库如何解决
SQL Server DBCC CLONEDATABASE 报错12605排查方案
1. 基础兼容性校验
- 确认SQL Server版本满足要求:DBCC CLONEDATABASE仅支持SQL Server 2014 SP2、SQL Server 2016 SP1及更高版本,更早版本不支持该命令
- 确认源数据库
mydb_prod状态正常,没有处于正在还原、正在恢复、可疑、离线等异常状态,执行命令查看:SELECT state_desc FROM sys.databases WHERE name = 'mydb_prod' - 确认源数据库不包含DBCC CLONEDATABASE不支持的特性:包括内存优化文件组、FILESTREAM、In-Memory OLTP对象,可通过以下命令校验:
SELECT * FROM sys.filegroups WHERE type IN ('FX', 'FD') AND database_id = DB_ID('mydb_prod')
返回非空结果则存在不支持的特性,无法直接克隆。
2. 权限配置校验
- 执行克隆命令的账号需要同时拥有sysadmin服务器级角色,以及源数据库的
VIEW SERVER STATE权限,仅库级owner权限不足以完成克隆操作。
3. 快照依赖条件校验
DBCC CLONEDATABASE依赖数据库快照能力实现克隆,需满足以下条件:
- 源数据库所在的卷支持NTFS稀疏文件,FAT32、exFAT、SMB 2.0以下的共享卷、老版本SQL Server搭配ReFS卷的场景,都会因为不支持稀疏文件导致快照创建失败
- 确认当前服务器没有存在和待创建的克隆库同名的数据库/快照,执行命令排查:
SELECT name FROM sys.databases WHERE name = 'mydb_clone'
如果存在同名库,先删除后再重试。
4. 进阶错误排查
如果上述校验都无异常,可以开启追踪标志获取底层报错细节:
执行以下命令,将DBCC的完整执行日志输出到结果窗口和SQL错误日志:
DBCC TRACEON(3604, 3605, -1) GO DBCC CLONEDATABASE(mydb_prod, mydb_clone) WITH NO_INFOMSGS GO DBCC TRACEOFF(3604, 3605, -1) GO
执行后重新查看SQL Server错误日志,即可获取快照创建失败的具体原因,比如文件权限不足、底层系统表损坏等,再对应处理即可。
内容的提问来源于stack exchange,提问作者Nicolas Souquet
相关产品推荐
相关产品推荐

