【问题标题】:Cannot install adventureworks 2012 database - Operating system error 5: Access is denied无法安装 Adventureworks 2012 数据库 - 操作系统错误 5:访问被拒绝
【发布时间】:2013-10-04 07:44:17
【问题描述】:

我正在尝试在 sql server 2012 中安装 AdventureWorks 2012 数据库。我从这个链接获得了 mdf 文件 - http://msftdbprodsamples.codeplex.com/releases/view/93587

这是我下载的文件的名称 - AdventureWorks2012_Database.zip

我在 Windows 7 64 位上执行所有这些操作。

我收到以下错误:

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

【问题讨论】:

  • 您是否检查了该 zip 文件是否被阻止。右键单击文件,如果文件被阻止,应该有一个取消阻止文件的选项。
  • @jcwrequests - 我解压缩了文件,然后尝试将它们安装到 sql server 2012 上。
  • 还要检查您用来访问数据库的用户是否有权访问这些文件。
  • @Szymon - 我该怎么做?它是一个 mdf 和 ldf 文件。
  • 转到它们所在的位置并检查文件属性中的安全性。

标签: sql-server sql-server-2012 ssms


【解决方案1】:

问题原因 - 将数据库 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; 

【讨论】:

  • 在默认 SQL Server 目录中附加文件后,在尝试使用 ASP.NET 应用程序访问它时出现相同的访问被拒绝错误。
  • @PeterX - 您是否尝试过任何对我不起作用的解决方案 (DNW) 或其他人给出的答案?查看我的第一个 DNW 点。
  • @RăzvanPanda - 不同人的不同笔画。享受。如果你喜欢我的回答,请给我点赞。谢谢。
  • @Steam:只是提到它是为了让读者知道以管理员身份运行可能是一个解决方案,即使它不适合您
【解决方案2】:

选项

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”帐户对该文件夹的完全访问权限来使其正常工作。

步骤

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

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

有关选项 1 和 2 的更多详细信息,请参阅 here ..

CREATE FILE encountered operating system error 5(failed to retrieve text for this error. Reason: 15105)

【讨论】:

  • 仅将本地用户完全控制权限添加到该目录可能不是一个好主意。而是将NT Service\MSSQLSERVER 帐户添加到文件夹的权限并授予完全控制权。
【解决方案3】:

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

【讨论】:

  • 我授予“用户”完全访问权限以解决问题。我想只限于 mssqlserver 会更好。
  • 我必须同时执行当前用户和 NT Server\MSSQLSERVER。我最初只尝试使用 MSSQLSERVER,但没有奏效。然后我添加了具有完全权限的用户
【解决方案4】:

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

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

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

【讨论】:

  • 你是个天才!这是解决我的问题的解决方案!
【解决方案5】:

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

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

无论您以谁的身份登录,都需要访问目录和文件的服务帐户。

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

【讨论】:

  • 你是怎么做到的?你做了我在回答中提到的吗?
  • 使用 Azure IaaS VM SQL Server 2012,我看到了同样的问题。将 NT Service\MSSQLServer 服务帐户添加到目标驱动器的安全 (FullControl) 解决了我的问题,并且我能够将 ReadOnly 选项设置为 False。
【解决方案6】:

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

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

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

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

【讨论】:

    【解决方案7】:

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

    解决方案一:如果你在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:\ Drive中没有足够的空间

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

    2.右键单击对象浏览器中的“数据库”并选择“附加”

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

    1. 导航到 MDF 文件位置,例如F:\AdventureWorks2012_Database\AdventureWorks2012_Data.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. 现在数据库“AdventureWorks2012”已在 SQL Sever 中创建。

    【讨论】:

      【解决方案8】:

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

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

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

      【讨论】:

        【解决方案9】:
        1. 附加数据库。
        2. 在对话框中,选择 AdventureWorks 的文件位置。
        3. 添加文件。
        4. 删除日志文件,因为 SQL 服务器稍后会在附加数据库后创建一个。

        【讨论】:

          【解决方案10】:

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

          【讨论】:

            【解决方案11】:

            赋予 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. 在“选项”下,向下滚动到“状态”部分,将“数据库只读”从“真”更改为“假”。

            【讨论】:

              【解决方案12】:

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

              【讨论】:

                【解决方案13】:

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

                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。从这里你应该一切都好。

                我希望这会有所帮助。

                【讨论】:

                  【解决方案14】:

                  注意:Windows 7 专业版,SQL 2012

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

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

                  1. 右键单击文件`名称->属性单击安全选项卡,然后 权限 -> 添加,然后检查名称,输入服务。
                  2. 要退出点击 ok、apply、ok、ok、ok 和 ok。

                  不知道为什么切换驱动器号会重置我的权限,但在 Windows 上确实如此 enter image description here

                  【讨论】:

                    【解决方案15】:

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

                    【讨论】:

                      【解决方案16】:

                      其实很简单。只需重命名文件。 无需移动,添加权限以任意方式运行...

                      【讨论】:

                        【解决方案17】:

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

                        1. 附加文件AdventureWorks2012_Data

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

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

                        3. 请按OK

                        然后出现新的数据库。

                        【讨论】:

                          【解决方案18】:

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

                          我知道...谢谢我:)

                          【讨论】:

                            猜你喜欢
                            • 2020-10-24
                            • 1970-01-01
                            • 2020-07-10
                            • 1970-01-01
                            • 2023-03-11
                            • 2013-01-11
                            • 1970-01-01
                            • 2020-05-11
                            • 1970-01-01
                            相关资源
                            最近更新 更多