恢复数据库时,bak文件不可见。

10
我正在尝试在Visual Studio上运行一个Classic ASP项目,因此我试图恢复数据库。但是我似乎找不到.bak文件来进行恢复。它在C驱动器中看不到。我查了一下,发现这与权限有关。我尝试在.bak文件的“属性>安全”中启用权限,“所有人”都试过了,但没有成功。我还尝试了 NT Service\MSSQLSERVER,请参见下面的截图。

1
你是否尝试从OK按钮上面的下拉菜单中选择“所有文件”选项?默认为.bak,.trn。也许文件的扩展名不是.bak,为确保一下... - objectNotFound
1
你所做的所有安全权限更改必须在包含 *.bak 文件的父目录上完成,而不是在 bak 文件本身上完成。在你的情况下,bak 文件位于 C:\ 驱动器的根目录中,因此你将需要在包含你的 bak 文件的 C:\ 驱动器上进行权限更改。更改 C:\ 驱动器根目录的权限通常不被视为良好的做法,因为它通常是启动驱动器。因此,一个更安全的方法是在 C:\ 驱动器中创建一个文件夹,将你的 bak 文件移动到新文件夹中,并改变新文件夹的安全权限。 - RBT
5个回答

15
我遇到了同样的问题。我了解到这是一个权限问题。
以下是解决这个问题的步骤:
进入控制面板>管理工具(Windows 11的Windows工具)>服务,双击服务。 复制SQL服务的登录帐户名称,如图所示。

去你的备份文件夹,右键点击并选择属性。 按照图片中显示的步骤进行操作。 点击编辑后,会弹出一个新窗口。

点击添加

请在此处粘贴之前复制的 SQL 服务账户的登录账户名称。然后点击“检查名称”按钮。

选择MSSQLSERVER,然后点击确定。 现在你将在安全选项卡中找到你的SQL服务器账户名。
选择SQL服务器账户名,并在权限框中选择允许所有复选框(我添加了完全控制),然后点击应用。

现在您将能够选择并恢复您的备份文件。

如果您正在使用命名实例,这是一个示例:servername\MSSQL$myNewInstance - PeterFnet

7
您还需要允许对文件所在文件夹的权限。SSMS首先需要浏览文件夹,然后才能读取文件。
在您的情况下,SQL Server尝试使用“NT Service\MSSQLSERVER”帐户访问文件夹,因此应该授予该帐户权限,无需给每个人更多权限。
如果上述方法不能解决问题,请尝试以下方法:
关闭/打开SSMS
将文件从根目录移动到某个文件夹并授予权限
使用TSQL脚本来恢复数据库,而不是使用SSMS。

我给了Read & executeList folder contentsRead权限给<localhostComputer>\Users用户组,然后它对我有效。给NT Service\MSSQLServer赋予权限同样有帮助。 - RBT
将内置的“Everyone”用户赋予相同的访问权限也可以起到同样的作用。 - RBT
1
对于命名的 SQL Server 实例,服务帐户格式为 NT Service\MSSQL$<SqlServerInstancename> - RBT

2
您可以将备份文件夹复制到 C:\Users\MSSQL$HCMIS\Desktop sql server 用户文件夹中。现在它将可访问。

0

我在我的家庭系统中安装了SQL Server Standalone 2014企业版,遇到了一个简单的问题。我尝试了各种文章中提供的所有可能性,但奇怪的是问题出现在我的2个命名实例上。 我可以使用查询和GUI在默认实例上还原数据库。我尝试将命名实例的SQL Server服务帐户更改为“网络服务”或“本地系统”,并授予它们备份保持文件夹的完全控制权限。


0
在我的情况下(也可能是典型/常见情况),我查看了Windows权限(并与其他.bak文件进行比较),但没有发现任何问题。
然而,这可能是由于没有首先按照“[设备]”选项恢复。即使您将.bak存储在正确的路径中,它最初未检测到来自[源]->[数据库]复选框,直到您按照通过[设备]选项还原的步骤。
(在我的情况下,第二个AdventureWorksDW2020-DAX-Docs在我通过额外步骤通过[Device]选项进行还原之前不可用。)
SQLServer需要对用户进行内部访问授权...等等(即使所有所需的Windows属性都已准备就绪)。

参考资料 https://learn.microsoft.com/zh-cn/sql/samples/adventureworks-install-configure?view=sql-server-ver16&tabs=ssms


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接