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

时间:2012-06-24 15:07:07

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

我在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

你知道如何解决它吗?

24 个答案:

答案 0 :(得分:125)

我能够解决运行MS SQL Management Studio作为ADMINISTRATOR的问题。

答案 1 :(得分:46)

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

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

答案 2 :(得分:5)

右键单击File mdf和ldf properties - >安全性 - >完全权限

答案 3 :(得分:4)

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

答案 4 :(得分:2)

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

答案 5 :(得分:2)

我遇到了类似的错误。

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'

答案 6 :(得分:1)

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

然而,只有当windows用户实际上是sql server运行的机器上的admisnitrator时才会这样。

例如,当从远程计算机使用SSMS时,如果用户只是运行SSMS的计算机上的管理员而不是运行SQL Server的计算机上的管理员,则无法使用“run as administartor”。

答案 7 :(得分:1)

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

答案 8 :(得分:1)

我在使用SQL 2005的Windows 2003上遇到了这个问题。我不得不将这些文件的所有权作为我的Windows用户帐户,并且我让数据库以这种方式附加。

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

我使用Windows身份验证登录SSMS,我能够无误地附加数据库。

干杯!

答案 9 :(得分:0)

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

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

重新启动服务。

Services

答案 10 :(得分:0)

如果有安装点,则将SQL Server服务帐户相应地添加到卷安全性中

答案 11 :(得分:0)

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

  • devdb.mdf和devdb.ldf

我继续附加文件,并不断使文件被其他进程使用。

我对系统视图选择名称sys.master_files中的physical_name进行了查询;并且看到确切的文件名已经被另一个数据库使用,因此每次我尝试附加文件时,我不断收到错误消息,指出另一个进程(sql server)正在使用文件

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

谢谢。

答案 12 :(得分:0)

就我而言,以管理员身份运行无济于事。我通过在Configuration Manager中将内置帐户更改为本地系统来解决了这个问题。

答案 13 :(得分:0)

我刚决定在D中创建文件:而不是C:并且一切运行良好。 Windows 7 ... 10有关于文件和文件夹的共享和授权的许多问题..

答案 14 :(得分:0)

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

答案 15 :(得分:0)

关键是"操作系统错误5"。 Microsoft帮助列出其站点上的各种错误代码和值

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

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

答案 16 :(得分:0)

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

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

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

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

答案 17 :(得分:0)

以管理员身份打开SSMS并以SQL身份验证与Windows身份验证身份运行无效。

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

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

答案 18 :(得分:0)

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

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

答案 19 :(得分:0)

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

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

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

这解决了我的问题。

答案 20 :(得分:0)

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

答案 21 :(得分:0)

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

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

答案 22 :(得分:0)

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

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

答案 23 :(得分:-2)

无需做所有这些。只需右键单击数据库文件并向每个人添加权限。这肯定会奏效。