Ryan Mortier Asked: 2022-08-23 05:34:12 +0800 CST2022-08-23 05:34:12 +0800 CST 2022-08-23 05:34:12 +0800 CST 恢复特定数据库时,SSMS 不会自动重命名文件。为什么? 772 我有几个数据库,当我使用 SSMS 还原并选择不同的目标名称时,文件名也会自动重命名。 例子: 我遇到的问题是一个特定的数据库,当我选择不同的目标名称时,文件不会自动重命名,我每次都必须手动重命名它们。是否有某个地方正在改变这种行为? 例子: sql-server restore 2 个回答 Voted AMtwo 2022-08-23T06:57:03+08:002022-08-23T06:57:03+08:00 SQL Server 数据库引擎本身从不这样做。这是 SSMS 在通过其 UI 进行还原时有时会执行此操作的“功能”。 如果 SQL Server 可以将文件恢复到与原始数据库完全相同的文件路径,它将在原始位置恢复文件,而不进行任何更改。 如果还原目标上不存在该原始位置(或者,我相信如果您选中“将所有文件重新定位到文件夹”复选框),那么 SSMS 会尝试为命令的MOVE子句动态构建文件路径和名称RESTORE DATABASE,并且在此过程中可能会重命名您的数据文件。 根据您的用例和文件命名约定,这可能非常有用。就个人而言,我觉得这很烦人,并且更喜欢构建RESTORE DATABASET-SQL,以便我可以完全控制/查看位置和文件名。 Best Answer Eric Prévost 2022-08-23T07:27:40+08:002022-08-23T07:27:40+08:00 根据我刚刚使用 SSMS v18.2.1 执行的测试,看起来这个 SSMS 功能区分大小写。 在您的示例中,数据库名称是生产,但您的文件是 Production.mdf 和 Production.ldf,因此 SSMS 不会在文件名中自动替换数据库名称。
SQL Server 数据库引擎本身从不这样做。这是 SSMS 在通过其 UI 进行还原时有时会执行此操作的“功能”。
如果 SQL Server 可以将文件恢复到与原始数据库完全相同的文件路径,它将在原始位置恢复文件,而不进行任何更改。
如果还原目标上不存在该原始位置(或者,我相信如果您选中“将所有文件重新定位到文件夹”复选框),那么 SSMS 会尝试为命令的
MOVE
子句动态构建文件路径和名称RESTORE DATABASE
,并且在此过程中可能会重命名您的数据文件。根据您的用例和文件命名约定,这可能非常有用。就个人而言,我觉得这很烦人,并且更喜欢构建
RESTORE DATABASE
T-SQL,以便我可以完全控制/查看位置和文件名。根据我刚刚使用 SSMS v18.2.1 执行的测试,看起来这个 SSMS 功能区分大小写。
在您的示例中,数据库名称是生产,但您的文件是 Production.mdf 和 Production.ldf,因此 SSMS 不会在文件名中自动替换数据库名称。