1

当我输入这个:

CREATE DATABASE AdventureWorks2012
ON (FILENAME = 'C:\Users\sohm\Desktop\Pohm\AdventureWorks2012_Data.mdf')
FOR ATTACH_REBUILD_LOG ;

我明白了:

文件激活失败。物理文件名“C:\Users\sohm\Desktop\AdventureWorks2012_Data_log.ldf”可能不正确。
消息 5123,级别 16,状态 1,第 1 行
CREATE FILE 在尝试打开或创建物理文件“C:\adventuredb\AdventureWorks2012_Data_log.ldf”时遇到操作系统错误 5(访问被拒绝。)。
消息 1813,第 16 级,状态 2,第 1 行
无法打开新数据库“AdventureWorks2012”。CREATE DATABASE 已中止。

我知道这与权限有关。我有管理员帐户。我已经阅读了一百万篇文章,但到目前为止没有任何效果。此外,当我尝试将包含 mdf 文件的文件夹更改为完全控制但它不断恢复为只读时。

4

7 回答 7

10

您应该以管理员身份运行 SSMS。
此外,您可能正在以“sa”用户身份运行查询(sql 服务器身份验证)。
尝试使用 Windows 身份验证运行查询。

于 2013-08-20T17:00:53.703 回答
3

精简版

要允许 MS SQL Server 2012 附加数据库文件,您必须授予对 mdf 和 ldf 文件的完全访问权限:

NT 服务\MSSQLSERVER

完全访问

长版

SQL 安全性在 2012 年对文件的处理进行了很多更新。 http://technet.microsoft.com/en-us/library/ms189128.aspx

如果您查看现有的附加数据库并且存在安全性,您可能会看到只有 2 个角色允许具有完全访问权限。MSSQLSERVER管理员,当附加 SQL 从文件中删除所有其他角色。

尝试从 fil 安全权限设置 MSSQLSERVER 将不起作用。

查看您的 services.msc 概述,您将在默认安装中看到 NT Service\MSSQLSERVER 也运行 SQL 服务器服务。

服务帐户不可见,与 IIS AppPools 的问题相同,系统创建了一个子组并“隐藏”自动发现帐户,可能是为了尝试保护帐户,但在我看来只是掩盖了设置。

问候

于 2013-09-13T06:57:37.830 回答
2

以管理员模式打开 SQL Server Management Stdio(右键单击 -> 选择以管理员身份运行。如果询问用户名和密码,请输入您的管理员用户名密码)。然后选择 Windows 身份验证单击确定,现在尝试附加它会附加没有任何错误。

于 2015-01-17T10:05:25.717 回答
1

这与您的帐户无关。SQL Server 正在尝试在运行 SQL Server 的服务帐户的上下文中写入该文件夹。您可以通过转到服务小程序并查看实例运行的身份(可能是 NT AUTHORITY\SYSTEM 或其他)来查看这是谁。您可以覆盖它,也可以将 MDF 文件放在 SQL Server 已经具有固有访问权限的数据文件夹中,而不是将它们放在 C:\ 驱动器上的其他位置。

于 2013-02-20T21:22:27.427 回答
1

尝试这个

转到您存储mdf文件的文件夹。

file -> Right click -> click在 mdf 上选择为已登录用户安全性授予文件的完全权限。

如果问题仍然存在,并且可能是由于事务日志损坏,您可以使用工具SQL 数据库恢复工具修复来修复损坏的 mdf 文件。

于 2019-12-07T12:44:23.787 回答
1

解决此问题的另一种方法是将所有 SQL Server 服务更改为本地系统帐户而不是服务。开始 -> 运行 ->Services.msc -> 向下滚动到 SQL Server,您应该会看到五个以 SQL Server 开头的服务。右键单击,属性,登录,更改为本地系统帐户。对所有其余的 SQL Server 服务重复并重新启动它们。

于 2016-06-07T21:03:45.257 回答
0

弄清楚了。我去了 sql server 配置管理器并右键单击 SQL Server 服务。然后我添加了我的 Windows 管理员帐户来运行该服务,现在它可以工作了。

于 2013-02-20T21:27:52.183 回答