无法附加数据库SQL Server 2012错误5

时间:2013-02-20 21:08:06

标签: sql sql-server-2012

当我输入时:

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”可能不正确。
   Msg 5123,Level 16,State 1,Line 1
  尝试时,CREATE FILE遇到操作系统错误5(访问被拒绝。)   打开或创建物理文件'C:\ adventuredb \ AdventureWorks2012_Data_log.ldf'   Msg 1813,Level 16,State 2,Line 1
  无法打开新数据库'AdventureWorks2012'。 CREATE DATABASE已中止。

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

7 个答案:

答案 0 :(得分:9)

您应该以管理员身份运行SSMS 您也可能将查询作为“sa”用户运行(sql server身份验证) 尝试使用Windows身份验证运行查询。

答案 1 :(得分:3)

短片

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

  

NT Service \ MSSQLSERVER

     

完全访问

LONG VERSION

SQL安全性在2012年处理文件时已经大量更新。 http://technet.microsoft.com/en-us/library/ms189128.aspx

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

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

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

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

问候扬1月

答案 2 :(得分:2)

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

答案 3 :(得分:1)

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

答案 4 :(得分:1)

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

答案 5 :(得分:0)

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

答案 6 :(得分:0)

尝试一下

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

在mdf上选择file -> Right click -> click会授予完全权限来归档登录用户的安全性。

如果仍然存在问题,并且可能是由于事务日志损坏引起的,则可以使用工具SQL Database Recovery Tool Repairs来修复损坏的mdf文件。