我正在尝试附加到与所有其他 SQL Server 数据库放在同一文件夹中的数据库文件 (*.mdf、*.ldf)。我通过尝试浏览到包含数据库文件以及所有活动数据库文件的文件夹来开始附加。我选择“附加数据库”,然后单击“添加”按钮将数据库添加到要附加到的数据库列表中。当我这样做时,我收到此错误:
TITLE: Locate Database Files - BESI-CHAD
------------------------------
D:\SQLdata\MSSQL10_50.SQLBESI\MSSQL\DATA
Cannot access the specified path or file on the server. Verify that you have the necessary security privileges and that the path or file exists.
If you know that the service account can access a specific file, type in the full path for the file in the File Name control in the Locate dialog box.
------------------------------
BUTTONS:
OK
------------------------------
路径是正确的,而且正如我提到的,它包含我所有的其他数据库文件,所以我认为权限不应该成为问题。
知道为什么我无法浏览到该文件夹并附加到我放在那里的数据库文件吗?
答案1
您的 SQL Server 实例的服务没有足够的权限来读取数据目录和/或文件夹的路径。(包括在对话框中列出树的驱动器根目录。)服务至少需要列出整个路径内容的权限。
如果这只是一个测试/开发环境,那么解决这个问题的最佳方法是配置 SQL Server 实例服务以与 SYSTEM 帐户一起运行。SYSTEM 帐户可以访问驱动器的根目录和数据文件夹。这还可以消除很多其他问题。
如果您使用 Windows 身份验证,并且您对此文件夹没有足够的权限,那么您还需要以管理员身份运行 Management Studio。
警告:切勿将 SYSTEM 帐户用于生产服务器。使用 Exec 命令连接数据库并确保服务具有足够的权限来访问数据文件夹。
答案2
用户应该对文件具有完全访问权限,但在我看来,使用“sa”或另一个 SQL 管理员附加数据库,然后数据库用户将能够访问数据库。
答案3
DiableNoir 的答案似乎是正确的。然而,直到我读到另一篇文章,我才明白他的意思这里。
简短而实用的答案是:
转到计算机管理> SQL Server> 属性> 登录> 在这里您必须检查本地系统帐户上的标记> 单击允许服务与桌面交互(Sheela Chauhan 的答案转述)。
警告:请记住 DiableNoir 的警告。
答案4
我们有以下情况:SQL Server 服务在域帐户下运行。我们根据策略从根驱动器中删除一些默认权限。
当我们尝试浏览文件以附加数据库或恢复数据库时,我们无法访问包含 SQL Server 区域数据文件的默认文件夹。但是,如果我们在“数据库数据文件位置”字段中输入文件夹名称,并在“文件名”字段中输入文件名,它将毫无问题地附加数据库。
当我们在安全日志中查找故障时,却没有任何信息,尽管我们对错误显示的文件夹启用了故障审核。
我们最终通过添加域帐户来对数据文件夹的根驱动器具有读取权限来解决了该问题。