首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用相同的逻辑文件名还原失败

用相同的逻辑文件名还原失败
EN

Database Administration用户
提问于 2014-08-08 19:45:57
回答 2查看 1.3K关注 0票数 4

如果备份来自不同版本的SQL时,逻辑文件名匹配时使用WITH替换(以避免使用移动)是否会失败?我有来自SQL 2008的备份,但是当我试图在SQL 2012文件夹上使用WITH恢复它时,尽管数据库备份和我要替换的数据库上的逻辑文件名匹配,但它没有给我提供‘目录查找’错误。

EN

回答 2

Database Administration用户

回答已采纳

发布于 2014-08-09 13:11:14

这就是我所找到的为什么文件自动定位在SQL 2012中不能工作的答案。我不认为这与SQL 2008的备份有任何关系。

在SQL Server 2012中,在恢复不显示每个文件的目标物理位置的完整备份子句期间,在现有数据库的基础上,文件自动定位算法要求:不仅备份中声明的文件与现有数据库中的任何给定文件之间的逻辑名称匹配,还需要它们的文件GUID、文件ID和创建LSN必须匹配。如果这些属性中的任何一个不匹配,则用于该逻辑文件的物理位置是存储在回溯中的位置。实现这个额外的需求是为了修复我刚刚公开的最后一个场景,它被认为是一个缺陷。

这是取自MSDN的文章:链接

票数 4
EN

Database Administration用户

发布于 2014-08-08 21:49:43

WITH REPLACE指的是数据库,而不是它的文件(尽管我猜它的效果是一样的)。

如果您有与现有数据库匹配的文件名,并且试图将其还原为不同的数据库,则需要使用WITH MOVE来防止Server试图覆盖现有文件(它将无法这样做)。

但是,在您的情况下,几乎可以肯定的是,您2008年的数据库备份中的数据文件位于如下路径:

代码语言:javascript
复制
C:\...\MSSQL.100\...\Data\

但在Server 2012机器上,该文件夹不存在;它将是:

代码语言:javascript
复制
C:\...\MSSQL.110\...\Data\

(如果两者都是命名实例,则差异可能更明显。)

在这一点上,您有两个选择:

  1. 使用RESTORE FILELISTONLY确定备份所期望的文件夹(S),并创建这些文件夹,确保Server服务帐户具有读/写/修改权限。
  2. 使用WITH MOVE并将文件放在一个有效的位置。

第三个非常愚蠢的选项是,您可以返回到2008服务器,将数据库移动到与新服务器上存在的文件夹相匹配的文件夹,进行新的备份,然后恢复。不要这样做。别再试图避免输入WITH MOVE.

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/73541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档