无法为名称含连字符的SQL Server数据库创建快照,加方括号仍报错
SQL Server含连字符数据库创建快照故障排查方案
- 首先确认原库数据文件逻辑名,绝大多数包裹
[]后仍报错的问题都由逻辑名填写错误导致,执行如下查询获取准确逻辑名:SELECT name, physical_name FROM sys.master_files WHERE database_id = DB_ID('db-pwapp-lostandfound-dev')
返回结果中name字段即为对应数据文件的逻辑名,创建快照时需为每一个原库数据文件单独配置映射。 - 使用标准语法创建快照,所有含特殊字符的标识符统一使用英文半角方括号
[]包裹,参考语法如下:
CREATE DATABASE [db-pwapp-lostandfound-dev_snapshot] ON ( NAME = [你查询到的主数据文件逻辑名], FILENAME = 'D:\SQL_Snapshot\db-pwapp-lostandfound-dev_mdf.ss' ) -- 存在多个数据文件时,按上述格式逐个追加配置即可 AS SNAPSHOT OF [db-pwapp-lostandfound-dev];
- 若执行后仍报错,逐一排查以下常见问题:
- 确认使用的方括号为英文半角字符,中文全角方括号无法被SQL Server识别
- 快照物理文件存储路径存在且当前登录账号拥有该路径的写入权限,对应磁盘剩余空间不小于原库数据文件总大小
- 原库未处于恢复、挂起、只读等异常状态,且不属于master、model等系统数据库
- 当前操作账号拥有ALTER ANY DATABASE服务级权限
- 特殊兼容场景:如果你的实例
QUOTED_IDENTIFIER参数设置为OFF,可使用英文双引号替换方括号包裹标识符即可。
内容的提问来源于stack exchange,提问作者John John
相关产品推荐
相关产品推荐

