【问题标题】:CREATE FILE encountered operating system error 5(failed to retrieve text for this error. Reason: 15105)CREATE FILE 遇到操作系统错误 5(无法检索此错误的文本。原因:15105)
【发布时间】:2012-06-24 15:07:06
【问题描述】:

我在文件夹中有一个来自 MS SQL EXPRESS 的数据库文件 .mdf

C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA

我想将它附加到 MS 2008 R2 (MSSQL10_50.MSSQLSERVER) 但使用 Server Management Studio 我收到以下错误:

CREATE FILE encountered operating system error 5(failed to retrieve text for this error. Reason: 15105) while attempting to open or create the physical file

你知道怎么解决吗?

【问题讨论】:

  • mdf 是否可能已经附加到 SQL Server 的实例,或者它在 Visual Studio 项目中打开或类似的东西?您是否尝试过制作文件的副本并附上? MDF 文件从何而来?有没有可能它没有完全从原始来源中分离出来?
  • SQL Server 是否以管理员身份运行?见CREATE FILE encountered operating system error 5 Access is denied
  • 感谢你们的 cmets,我能够以管理员身份解决问题,谢谢!

标签: sql sql-server-2008 sql-server-express


【解决方案1】:

我能够解决以管理员身份运行 MS SQL Management Studio 的问题。

【讨论】:

  • stackoverflow.com/users/2029904/user2029904 的响应没有那么激进,并解决了根本问题 - 实例帐户对数据库文件的访问权限不足。
  • @GibboK 如果使用 EF:Code First 创建数据库会怎样?我更改了模型,当我尝试运行程序时出现此错误。我以管理员身份运行 VS,但没有任何变化
  • 修复“实例帐户对数据库文件的访问权限不足”对我不起作用,只能以管理员身份运行。为什么没有一位 Microsoft 程序员一次解决这个问题并为我们省去所有这些不必要的痛苦?
【解决方案2】:

这是一个 Windows 权限问题。如果您使用 Windows 身份验证连接到服务器,则该 Windows 用户需要对该文件的权限。如果您使用 SQL Server 身份验证连接到服务器,则 SQL Server 实例帐户(MSSQL$,例如 MSSQL$SQLEXPRESS)需要对该文件的权限。其他建议以管理员身份登录的解决方案基本上完成了同样的事情(有点大锤:)。

如果数据库文件位于 SQL Server 的数据文件夹中,那么它应该已经从该文件夹继承了 SQL Server 帐户的用户权限,因此 SQL Server 身份验证应该有效。我建议修复该文件夹的 SQL Server 实例帐户权限。如果数据文件在其他地方并且 SQL Server 帐户没有权限,那么您以后可能会遇到其他问题。同样,更好的解决方案是修复 SS 帐户权限。除非你总是以管理员身份登录...

【讨论】:

  • 这是我的解决方案。谢谢!
  • 编辑数据文件夹的安全属性以包含对运行 SQL Management Studio 的用户的完全控制。
  • 实例账户尝试以写入 DAC 权限打开数据和日志文件。如果 \Users 帐户对文件具有完全权限,则此选项可用。当测试连接成功时,这些权限将被覆盖为特定的 SQL Server 值,从而删除临时设置。
  • 以管理员身份运行对我不起作用。当我检查服务中的 SQL Server 时,它在网络服务帐户下运行。我授予该文件夹的网络服务权限,创建数据库成功:)
  • 这个答案引导我找到我的解决方案:确保运行 SQL Server 服务的身份(例如“NT Service\MSSQLSERVER”)有权访问 DATA 文件夹。
【解决方案3】:

右键单击文件 mdf 和 ldf 属性 -> 安全 -> 完全权限

【讨论】:

    【解决方案4】:

    授予管理员权限或完全控制我的数据库安装位置解决了我的问题

    【讨论】:

      【解决方案5】:

      我遇到了同样的问题。经过几次尝试,我意识到将 sql server 与 windows 身份验证连接解决了这个问题。

      【讨论】:

      • 这为我解决了这个问题。以管理员身份运行 SQL Server Management Studio 并没有为我解决问题。
      • 与我相反,我使用“sa”帐户使用 SQL Server 身份验证登录,并且可以正常工作。
      【解决方案6】:

      开始->运行->services.msc->滚动服务列表,直到找到SQL Server->右键单击->属性->登录选项卡:

      然后选择Local System Account 并选中Allow service to interact with desktop 复选框。

      重启服务。

      【讨论】:

        【解决方案7】:

        我遇到了类似的错误。

        CREATE FILE encountered operating system error **32**(failed to retrieve text for this error. Reason: 15105) while attempting to open or create the physical file
        

        我使用以下命令附加数据库:

        EXEC sp_attach_single_file_db @dbname = 'SPDB',
        @physname = 'D:\SPDB.mdf'
        

        【讨论】:

          【解决方案8】:

          当文件的所有者被删除时,也会出现同样的问题。发生这种情况时,如果您转到文件的属性,您将看到一个 SID 而不是用户名。取得文件的所有权(给自己完全控制权)。完成后,您可以对文件执行任何您需要执行的操作。

          我在登录时已经完成了这项工作,因为管理员没有做到这一点。

          【讨论】:

            【解决方案9】:

            其他建议以管理员身份运行会有所帮助。

            但是,这只有在 windows 用户实际上是运行 sql server 的机器上的管理员时才这样做。

            例如,当从远程计算机使用 SSMS 时,如果用户只是运行 SSMS 的计算机上的管理员,而不是运行 SQL Server 的计算机上的管理员,则使用“以管理员身份运行”将无济于事。

            【讨论】:

              【解决方案10】:

              1.复制您的--.MDF,--.LDF文件pate这个位置 对于 2008 服务器 C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA 2.在 sql server 2008 中使用 ATTACH 并选择相同的位置添加

              【讨论】:

                【解决方案11】:

                我在带有 SQL 2005 的 Windows 2003 上遇到了这个问题。我必须将文件的所有权作为我的 Windows 用户帐户,然后我让数据库以这种方式附加。

                您必须右键单击该文件,选择属性,单击确定以通过信息屏幕,单击高级按钮,从可用帐户或组列表中选择您的帐户,应用该更改,然后单击确定属性屏幕。完成所有操作后,您将能够管理文件权限。

                我使用 Windows 身份验证登录 SSMS,并且能够正确附加数据库。

                干杯!

                【讨论】:

                  【解决方案12】:

                  如果您已经以管理员身份运行,请确保您使用的用户具有正确的服务器角色。

                  1. 以 sa 身份登录(如果可以)
                  2. 展开安全文件夹
                  3. 展开登录文件夹
                  4. 右键单击您要使用的用户
                  5. 选择属性
                  6. 选择服务器角色
                  7. 选择所有服务器角色
                  8. 点击确定
                  9. 重启 SSMS
                  10. 用修改后的用户登录

                  【讨论】:

                    【解决方案13】:

                    在我的情况下,我在尝试在新驱动器上创建数据库时遇到错误。 为了克服这个问题,我在该驱动器中创建了一个新文件夹并将用户属性 Security 设置为完全控制它(设置 Modify 可能就足够了)。 结论: 为用户设置驱动器/文件夹属性安全性以“修改”。

                    【讨论】:

                      【解决方案14】:

                      我的解决方案稍微复杂一些。在验证了服务运行的用户、以本地和域管理员身份运行 MSSMS 并检查文件夹权限后,我仍然收到此错误。我的解决方案?

                      文件夹所有权仍由本地帐户维护。

                      属性 > 安全 > 高级 > 所有者 >(域/本地用户/组 SQL 服务正在运行)

                      这为我解决了这个问题。

                      【讨论】:

                        【解决方案15】:

                        以管理员身份打开 SSMS 并以 SQL Auth vs Windows Auth 身份运行不起作用。

                        有效的方法是将我的文件名更改为 LDF 和 MDF 文件所在的相同位置。

                        alter database MyDB
                        add file ( name = N'FileStreamName', 
                        filename = N'D:\SQL Databases\FileStreamSpace' ) 
                        to filegroup DocumentFiles;
                        

                        【讨论】:

                          【解决方案16】:

                          我在恢复备份在另一台服务器上的数据库时收到此错误。经过长时间的斗争,这就是我所做的

                          1. 启用即时文件初始化,

                          2. 将文件夹的权限(完全控制)授予服务帐户和我自己的 Windows 帐户,

                          3. 重新启动 SQL 服务。 之后数据库恢复。

                          【讨论】:

                            【解决方案17】:

                            关键是“操作系统错误5”。微软在他们的网站上列出了各种错误代码和值

                            https://msdn.microsoft.com/en-us/library/windows/desktop/ms681382(v=vs.85).aspx

                            ERROR_ACCESS_DENIED 5 (0x5) 访问被拒绝。

                            【讨论】:

                            • OP 正在询问如何解决它,而不是详细说明他已经提到的内容。
                            【解决方案18】:

                            当分离数据库的 windowsuser 和附加数据库的 windowsuser 不同时,我们遇到了这个问题。当 windowsuser 分离数据库时,尝试附加它,它工作正常,没有问题。

                            【讨论】:

                              【解决方案19】:

                              步骤如下:

                              1. 右键单击 .mdf 和 .ldf 文件。
                              2. 然后选择属性。
                              3. 在安全 -> 高级 -> 权限上添加用户

                              【讨论】:

                                【解决方案20】:

                                复制您的 --.MDF,--.LDF 文件到此位置 对于 2008 服务器 C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA 2

                                在 sql server 2008 中使用 ATTACH 并选择相同的位置进行添加

                                【讨论】:

                                  【解决方案21】:

                                  我刚决定在 D: 而不是 C: 中创建文件,并且一切正常。 windows 7...10 在文件和文件夹的共享和授权方面有很多问题..

                                  【讨论】:

                                    【解决方案22】:

                                    就我而言,以管理员身份运行没有帮助。我通过在配置管理器中将内置帐户更改为本地系统解决了这个问题。

                                    【讨论】:

                                    • 我在 Visual Studio 解决方案的配置管理器中看不到此选项。什么意思?
                                    【解决方案23】:

                                    这就是我的情况。 我被要求为数据库附加文件。我得到的文件名如下

                                    • devdb.mdf 和 devdb.ldf

                                    我继续附加文件并不断获取文件正在被另一个进程使用。

                                    我对系统视图 select name, physical_name from sys.master_files 进行了查询;并看到确切的文件名已被另一个数据库使用,因此每次我尝试附加文件时,我一直收到错误文件正在被另一个进程(sql server)使用

                                    因此,如果您收到这样的消息,那么还要查询系统视图 sys.master_files 并查看哪个数据库可能已经在使用同名文件。 以后你会弄清楚该怎么做。

                                    谢谢。

                                    【讨论】:

                                      【解决方案24】:

                                      如果您有挂载点,请相应地将 SQL 服务器服务帐户添加到卷安全

                                      【讨论】:

                                        【解决方案25】:

                                        不需要做这一切。只需右键单击数据库文件并为每个人添加权限。这肯定会奏效。

                                        【讨论】:

                                        • 实际上这对我有用,以管理员身份运行 Management Studio 的另一个选项没有帮助,但更改文件权限就可以了。顺便说一句 - 问题是关于如何解决问题的想法 - 所以 IMO 这是一个答案(虽然不是很精致)
                                        • 授予“每个人”(实际上,这应该被理解为“世界上的每个人”)权限来弄乱你的数据库并不是一个解决方案,尽管它可能会隐藏真正的问题。
                                        猜你喜欢
                                        • 2011-01-24
                                        • 2012-04-27
                                        • 1970-01-01
                                        • 1970-01-01
                                        • 1970-01-01
                                        • 2020-10-24
                                        • 1970-01-01
                                        • 2018-04-18
                                        • 1970-01-01
                                        相关资源
                                        最近更新 更多