【问题标题】:Restoring SQL Server 2008 R2 *.bak databases on SQL Server 2014 Express在 SQL Server 2014 Express 上恢复 SQL Server 2008 R2 *.bak 数据库
【发布时间】:2015-11-27 10:54:49
【问题描述】:

我最近将我的 SQL Server 2008 R2 (10.50.1600.1) 更改为 SQL Server 2014 Express (12.0.4100.1 - 带有 Service Pack 1)。现在我想恢复我在 SQL Server 2008 R2 上创建的 *.bak 文件。

首先我在Backup 目录(C:\Program Files\Microsoft SQL Server\MSSQL12.RALTECH\MSSQL\Backup) 中看不到我的*.bak 文件。我在那里复制了我所有的备份文件。

当我尝试在这样的推送中键入备份文件位置时(我的一个备份文件称为 RMP),我可以看到 Management Studio 识别该文件:

文件(备份)大小为 2201 KB,数据库文件为 2245632(Management Studio 中的“大小”列 - 我不知道它的单位是 MB 还是 KB ...)但是它没有大于 SQL 中可接受的大小服务器速成版。所以这不是问题。

当我点击确定恢复时,我收到此错误:

标题:Microsoft SQL Server Management Studio

数据库“RMP”的恢复失败。 (Microsoft.SqlServer.Management.RelationalEngineTasks)

附加信息:

System.Data.SqlClient.SqlError:操作系统在“C:\Program Files\Microsoft SQL Server\MSSQL10_50.RALTECHSQL\MSSQL”上尝试“RestoreContainer::ValidateTargetForCreation”时返回错误“5(拒绝访问。)” \DATA\RMP.mdf'。 (Microsoft.SqlServer.SmoExtended)

我能用这个做什么?如何从 SQL Server 2008 R2 *.bak 文件恢复 SQL Server 2014 Express 上的数据库?对我来说奇怪的是我的备份文件 (*.bak) 有挂锁图标。那会是个问题吗?

谢谢

【问题讨论】:

  • 我系统中的所有帐户都对该文件以及整个目录具有“完全控制”权限。我还能用这个做什么?
  • 检查bak文件的权限。它们通常面向运行创建备份的数据库服务器的 Windows 用户,而不是在 SSMS 中启动备份的用户帐户。我记得在类似的情况下,我刚刚授予了备份目录上所有人的完全访问权限,但这远非最佳实践。
  • 我认为我做得很好 - 我添加了 2 个对该文件具有完全权限的帐户(SamSs 和 MSSQL$RALTECH - RALTECH 是我的实例名称)。它没有帮助。那我做错了吗?

标签: sql-server sql-server-2008-r2 database-restore sql-server-2014-express


【解决方案1】:

您的问题不是备份文件夹的权限,而是您试图让 SQL Server 在其中创建新数据库文件的文件夹。

当您从旧实例备份它时,SQL Server 将默认尝试将数据库文件放回它们最初所在的文件夹(在本例中为 C:\Program Files\Microsoft SQL Server\MSSQL10_50.RALTECHSQL\ MSSQL\DATA)

您不希望这种情况发生,因为您的新 2014 服务器无权在此文件夹中创建文件(而且它们可能已经存在,除非您从旧实例中删除了数据库),您需要做什么是为文件选择一个新位置,因此在单击还原之前,单击还原对话框的文件部分并为文件选择一个新位置,根据您显示的文件夹,它应该类似于 C:\Program Files\Microsoft SQL Server\MSSQL12.RALTECH\MSSQL\DATA\

您的 2014 实例将有权在此处创建文件,并且恢复应该可以工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-19
    • 1970-01-01
    • 2016-05-18
    相关资源
    最近更新 更多