24

I am trying to install AdventureWorks 2012 database in sql server 2012. I got the mdf file from this link - http://msftdbprodsamples.codeplex.com/releases/view/93587

Here is the name of the file I downloaded - AdventureWorks2012_Database.zip

I am doing all this on a windows 7 64 bit.

I get the error below:

Attach database failed for Server 'SuperPC\SQL2012'.  (Microsoft.SqlServer.Smo)

For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=11.0.2100.60+((SQL11_RTM).120210-1917+)&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=Attach+database+Server&LinkId=20476

ADDITIONAL INFORMATION:

An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)

Unable to open the physical file "C:\Databases\AdventureWorks2012_Data.mdf". Operating system error 5: "5(Access is denied.)". (Microsoft SQL Server, Error: 5120)

For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&ProdVer=11.00.2100&EvtSrc=MSSQLServer&EvtID=5120&LinkId=20476
4

18 回答 18

69

问题的原因 - 将数据库 mdf 和 ldf 文件放在“官方”SQL Server 安装文件夹之外的目录中。

解决方案 -

http://tryingmicrosoft.com/error-while-attaching-a-database-to-sql-server-2008-r2/

将您的 .mdf 文件和 ldf 文件粘贴到此目录 - C:\Program Files\Microsoft SQL Server\MSSQL11.SS2012\MSSQL\DATA

没有解决问题的解决方案 -

1 - 解锁压缩文件。还检查了 mdf 和 ldf 文件是否未被阻止。(步骤 - 右键单击​​ zip 文件 > 属性 > 取消阻止)

解除封锁

2 - 以管理员身份运行 SSMS 2012。

3 - 运行形式的 SQL 查询 -

CREATE DATABASE MyAdventureWorks 
    ON (FILENAME = 'C:\MySQLServer\AdventureWorks_Data.mdf'), 
    (FILENAME = 'C:\MySQLServer\AdventureWorks_Log.ldf') 
    FOR ATTACH; 
于 2013-09-27T22:34:58.043 回答
19

选项

1. 将 .mdf 和 .ldf 移动到 SQLServer 安装目录 \Data\ 文件夹(例如 C:\Program Files (x86)\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA)

2. 以管理员身份运行 SQL Server Management Studio

3. 将 SQL Server 用户的权限添加到您需要访问的目录。我不确定哪个用户是正确的,但通过授予“[PCNAME]\Users”帐户对该文件夹的完全访问权限来使其正常工作。

脚步

右键单击文件夹。选择属性。选择“安全”选项卡。点击“编辑”。选择“Users ([PCNAME]\Users)”,例如,如果 pc 的名称是 mycomp,那么这将是“Users (mycomp\Users)”

单击“用户权限”下“完全控制”旁边的“允许”复选框

有关选项 1 和 2 的更多详细信息,请参见此处

CREATE FILE 遇到操作系统错误 5(无法检索此错误的文本。原因:15105)

于 2014-01-13T02:53:28.787 回答
14

我更改了权限,这对我有用:安全性-> 高级。添加“NT Service\MSSQLSERVER”并授予完全访问权限,禁用继承,添加自己以便于故障排除。对 .mdf 和 .ldf 文件执行此操作。

于 2014-05-16T21:32:47.497 回答
7

您不必移动.mdf文件。只需右键单击数据库所在的文件夹并更改安全权限。我让经过身份验证的用户完全控制。然后我运行下面的 TSQL 脚本来附加数据库:

CREATE DATABASE MyAdventureWorks 
    ON (FILENAME = 'C:\Adventureworks\AdventureWorks2012_Data.mdf'), 
    (FILENAME = 'C:\Adventureworks\AdventureWorks2012_Log.ldf') 
    FOR ATTACH; 

如您所见,我的数据库文件位于名为Adventureworks.

于 2014-12-20T16:16:32.500 回答
6

将 AdventureWorks2012 数据库附加到本地 MSSQL 数据库的步骤:

解决方案1:如果你在Windows的C:\ Drive中有足够的空间,并且想在C:\ Drive创建数据库

  1. 将 AdventureWorks2012_Data.mdf 和 A​​dventureWorks2012_log.ldf 放在以下位置 C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA

2.右键单击对象资源管理器中的“数据库”并选择“附加”

3.在附加数据库对话框中,单击要附加的数据库中的“添加”按钮:字段。

  1. 导航到 MDF 文件位置 C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\AdventureWorks2012_Data.mdf 并单击“附加数据库”对话框底部的“确定”。

5.现在数据库'AdventureWorks2012'在SQL Sever中创建。

解决方案 2:如果您在 Windows 中的 C:\ 驱动器中没有足够的空间

1.通过选择服务器名称 XXX\SQLEXPRESS 和 Authentication - 'Windows Authentication' 连接到本地服务器

2.右键单击对象资源管理器中的“数据库”并选择“附加”

3.在附加数据库对话框中,单击要附加的数据库中的“添加”按钮:字段。

  1. 导航到例如 F:\AdventureWorks2012_Database\AdventureWorks2012_Data.mdf 的 MDF 文件位置,然后单击“附加数据库”对话框底部的“确定”。

  2. 这将生成以下错误消息:“附加数据库时发生错误。单击“消息”列中的超链接了解详细信息。

  3. 解决方案是:

    i) 右键单击​​ AdventureWorks2012_Data 文件夹,选择属性。

    ii) 点击“安全”标签

    iii) 在“组或用户名:”部分中选择用户(xxx\Users)

    iv) 点击“编辑”按钮

    v)在弹出窗口的“组或用户名:”中选择用户(xxx\Users),

    vi) 选中“用户权限”部分中的“完全控制”复选框。

    vii) 单击确定和确定。

  4. 现在回到 SQLsevers 的附加数据库屏幕,单击要附加的数据库中的“添加”按钮:字段。

  5. 导航到 MDF 文件位置,例如 F:\AdventureWorks2012_Database\AdventureWorks2012_Data.mdf,然后单击“附加数据库”对话框底部的“确定”。

  6. 现在在 SQL Sever 中创建了数据库“AdventureWorks2012”。

于 2015-03-09T09:12:34.733 回答
6

错误 5 - 访问被拒绝 - 来自 DOS 的旧时代。基本上,这是一个 ACL - 访问控制列表错误。

只要 SQL SERVER SERVICE 帐户有权访问,您就可以将数据库放在您喜欢的任何地方!

您以谁的身份登录并不重要,它是需要访问目录和文件的服务帐户。

您不需要以管理员身份运行 SSMS。没有这一步,我一直在附加数据库。

于 2013-09-28T00:05:34.030 回答
6

只需删除日志文件,如果您是第一次通过附加创建数据库,这可能会对您有所帮助。

我试图通过附加来创建数据库,但我一直得到类似的屏幕截图

在此处输入图像描述

感谢下面的文章,我发现并且只需要删除日志,这很明显,但 MS 并没有提出不为新数据库自行显示。非常糟糕的体验,不确定是否与 SQL Server 许可产品类似。

http://exacthelp.blogspot.in/2012/12/unable-to-open-physical-file-operating.html

于 2013-12-13T18:16:13.747 回答
3

我意识到这是一个老问题,但对我来说,在默认文件夹之外附加数据库实际上有两个要求:

  1. 我必须明确授予当前用户(我)对该文件夹的完全访问权限(尽管已经具有隐式权限)
  2. 我必须授予NT SERVICE\MSSQL$INSTANCENAME对该文件夹的完全访问权限

我假设如果进程(SSMS)被提升,则不需要#1。

于 2015-05-12T22:18:19.177 回答
2
  1. 附加数据库。
  2. 在对话框中,选择 AdventureWorks 的文件位置。
  3. 添加文件。
  4. 删除日志文件,因为 SQL 服务器稍后会在附加数据库后创建一个。
于 2013-10-24T15:37:09.480 回答
1

我在尝试使用 ASP.NET MVS 的自定义设置创建新数据库时遇到了同样的问题,我已经浪费了几个小时来解决它。最后我的解决方案是进入我的 App_Data 文件夹的文件夹选项/安全性。然后我添加了一个帐户“经过身份验证的用户”并让他​​完全控制。仅此而已。我的应用程序运行良好..

于 2018-09-08T21:21:29.513 回答
0

赋予 sql 服务帐户 'NT SERVICE\MSSQLSERVER' 对数据库文件的“完全控制”

如果您有权访问服务器文件/文件夹,您可以尝试这个对我有用的解决方案:

Windows Server 2008 R2 上的 SQL Server 2012

  1. 右键单击数据库 (mdf/ldf) 文件或文件夹,然后选择“属性”。
  2. 选择“安全”选项卡,然后单击“编辑”按钮。
  3. 单击“添加”按钮。
  4. 输入要选择的对象名称为“NT SERVICE\MSSQLSERVER”,然后单击“检查名称”按钮。
  5. 选择 MSSQLSERVER (RDN) 并单击“确定”按钮两次。
  6. 将此服务帐户“完全控制”到文件或文件夹。
  7. 返回 SSMS,右键单击数据库并选择“属性”。
  8. 在“选项”下,向下滚动到“状态”部分并将“数据库只读”从“真”更改为“假”。
于 2015-06-24T03:01:33.037 回答
0

我通过从这个网站下载 Adventure 作品解决了这个问题

http://msftdbprodsamples.codeplex.com/downloads/get/723031

请注意,下载 AdventureWorks zip 文件夹时,请确保该文件附加了 _data,例如 AdventureWorks2012_Data.zip,因为该文件同时包含 .mdf 和 .ldf 文件。

下载后,将文件夹内容解压缩到计算机上的此 url C:\Program Files\Microsoft SQL Server\MSSQL11.***\MSSQL\DATA。在 SQl 服务器中,转到对象资源管理器并右键单击数据库以附加数据库。在“附加”对话框中,您应该选择 Adve********.mdf。从这里你应该一切都好。

我希望这有帮助。

于 2015-12-09T23:02:26.830 回答
0

感谢之前的建议。您不必将数据库文件移动到 SQL 服务器目录或删除数据库日志文件。相反,您只需为 Authenticated Users 授予对 .MDF 和 .LDF 文件的完全控制权限。通过这样做,我成功地将 AdventureWorks2012 和 AdventureWorksLT2012 示例数据库附加到 SQL Server Management Studio (SSMS) 中。

于 2017-10-15T15:51:02.630 回答
0

注意:Windows 7 专业版、SQL 2012

使用后DiskManager.msc,我必须对和文件添加machine_name\SERVICE完全控制权。.mdf.ldf

我的笔记本电脑是 Borris,所以:

  1. 右键单击文件“名称”->“属性”单击“安全”选项卡,然后单击“权限”->“添加”,然后检查名称,输入服务。
  2. 要退出点击确定,应用,确定,确定,确定和确定。

不知道为什么切换驱动器号会重置我的权限,但它确实在 Windows 上 输入图像描述

于 2016-01-29T19:57:23.070 回答
0

实际上这很容易。只需重命名文件。无需移动,添加权限以任何方式运行...

于 2018-02-03T16:03:28.390 回答
0

只需将当前用户添加到安全选项卡即可完全控制并重新运行附加查询

于 2015-08-17T22:38:59.990 回答
-1

我通过以下方式解决了这个问题:

  1. 附加文件AdventureWorks2012_Data

    1.1。然后文件AdventureWorks2012_log出现并且不存在。

  2. 使用Remove按钮删除.log文件。

  3. OK

然后出现新的数据库。

于 2015-05-06T20:15:51.397 回答
-1

iTS EASY,只需停止 SQL 服务,复制您想要的内容或进行恢复,然后再次启动该服务……瞧,除非您停止该服务,否则您无法复制任何内容。如果您要恢复的内容位于活动树上,则无法覆盖它,它被锁定,简单......

我知道...谢谢我:)

于 2015-10-31T20:20:53.443 回答