2013-02-20 58 views
1

当我键入:无法附加数据库SQL Server 2012的错误5

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
创建文件遇到操作系统错误5(拒绝访问。)试图 打开或创建物理文件 'C:\ AdventureDB的\ AdventureWorks2012_Data_log.ldf' 。
Ms13 1813,Level 16,State 2,Line 1
无法打开新数据库'AdventureWorks2012'。 CREATE DATABASE被中止。

我知道它与权限有关。我有管理员帐户。我已经阅读了一百万篇文章,但到目前为止没有任何工作。另外,当我尝试更改包含mdf文件的文件夹时,可以完全控制它,但它会一直恢复为只读状态。

+0

请确保它尚未连接,SQL Server将完全控制MDF文件。 – Ulises 2013-02-20 21:09:36

+0

我做了,数据库没有连接 – eaglecoug 2013-02-20 21:13:01

+2

请确保运行sql server服务的帐户完全控制该文件夹,因为它需要读取MDF并在其中创建一个新的LDF文件。忽略该文件夹的只读属性,它通常在Windows中被忽略,主要用于文件夹自定义。 – steoleary 2013-02-20 21:15:19

回答

1

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

0

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

9

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

3

短版

为了让MS SQL Server 2012的附加数据库文件,则必须授予完全访问MDF和LDF文件:

NT服务\ MSSQLSERVER

Full Access

LONG VERSION

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

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

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

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

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

问候

+0

您也可以为每个将授予与目录相同权限的文件启用继承。通常这将由管理员组完全控制。 – Woody 2013-10-01 20:55:16

+0

嗨,伍迪,你建议的解决方案在2012年无法使用。请参阅问题描述的最后一句。 – 2013-10-02 04:30:08

+0

谢谢!有用! – outlookrperson 2015-06-19 14:59:10

2

打开SQL Server管理STDIO在管理员模式(右键点击 - >选择以管理员身份运行。如果它要求用户名和密码,输入您的管理员用户名和口令)。然后选择Windows身份验证点击确定,现在尝试连接它将无任何错误地连接。

1

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

相关问题