CREATE FILE遇到操作系统错误5(未能为此错误检索文本。原因:15105)


71

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

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

您知道如何解决吗?


2
是否有可能已经将mdf附加到SQL Server的实例,或者它已在Visual Studio项目中打开或沿这些方向打开?您是否尝试过复制文件并将其附加?MDF文件来自哪里?是否有可能没有与原始来源完全分开?
亚伦·伯特兰

3
SQL Server是否以管理员身份运行?请参阅CREATE FILE遇到操作系统错误5访问被拒绝
Andomar 2012年

1
谢谢您的评论,我能够解决以管理员身份运行的问题,谢谢!
GibboK 2012年

Answers:


133

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


3
stackoverflow.com/users/2029904/user2029904的响应不那么主动,并且可以解决根本的问题-实例帐户对数据库文件的访问不足。
Pekka

@GibboK如果使用EF:Code First创建数据库怎么办?我更改了模型,尝试运行程序时出现此错误apear.i,我以管理员身份运行VS,但没有任何更改
AminM 2016年

修复“实例帐户对数据库文件的访问不足”对我而言不起作用,仅在以Administrator身份运行时才能运行。为什么一位Microsoft程序员不解决此问题并为我们省去所有不必要的痛苦?
tbone

50

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

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


这是我的解决方案。谢谢!
JeffryHouser 2013年

5
编辑数据文件夹的“安全性”属性,以包括对运行SQL Management Studio的用户的完全控制权。
Suncat2000

实例帐户尝试使用Write DAC权限打开数据和日志文件。如果<Machine> \ Users帐户对文件具有完全权限,则此选项可用。测试连接成功后,这些权限将覆盖特定的SQL Server值,从而删除临时设置。
佩卡

4
以管理员身份运行对我不起作用。当我检查服务中的SQL Server时,它在网络服务帐户下运行。我在该文件夹上授予网络服务权限,并且创建数据库成功:)
Atta H.

1
此答案将我引向我的解决方案:确保运行SQL Server服务的身份(例如“ NT Service \ MSSQLSERVER”)可以访问DATA文件夹。
亚历杭德罗·莫雷诺2015年


4

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


3

我有同样的问题。经过几次尝试,我意识到使用Windows身份验证连接sql服务器可以解决此问题。


这为我解决了这个问题。以管理员身份运行SQL Server Management Studio并不能解决我的问题。
Guru Josh

与我相反,我使用带有“ sa”帐户的SQL Server身份验证登录,它可以正常工作。
dijoe

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'

1

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

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


1

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

但是,仅当Windows用户实际上是运行SQL Server的计算机上的管理员时,才需要这样做。

例如,在远程计算机上使用SSMS时,如果用户仅是运行SSMS的计算机上的管理员,而不是运行SQL Server的计算机上的管理员,则将无法使用“以administartor身份运行”。


1

1.复制你的-中纤板- LDF文件。八德这个位置对于2008服务器 C:\ Program Files文件\ Microsoft SQL Server的\ MSSQL10.MSSQLSERVER \ MSSQL \ DATA 2.In SQL Server 2008中使用连网,并选择同一位置用于添加


1

我在使用SQL 2005的Windows 2003上遇到了这个问题。我必须以Windows用户帐户的身份拥有文件的所有权,并以这种方式附加了数据库。

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

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

干杯!


1

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

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

重新启动服务。

服务


0

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

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

0

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


0

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

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

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

这为我解决了这个问题。


0

以管理员身份打开SSMS并以SQL身份验证与Windows身份验证运行无法正常工作。

起作用的只是将我的文件名更改为LDF和MDF文件所在的位置。

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

0

还原在另一台服务器上备份的数据库时出现此错误。经过长时间的努力,这就是我所做的

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

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

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



0

当Windowsuser分离数据库和Windowsuser分离数据库时,我们遇到了这个问题。当Windows用户分离数据库时,尝试附加它时,它工作正常,没有问题。



0

复制你的--.MDF--.LDF文件佩特这个位置对于2008服务器C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA 2

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


0

我只是决定用D:而不是C:创建文件,并且一切正常。Windows 7 ... 10在文件和文件夹的共享和授权方面存在许多问题。


0

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


我在Visual Studio解决方案的配置管理器中看不到此选项。你什么意思?
bkwdesign

0

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

  • devdb.mdf和devdb.ldf

我继续附加文件,并不断使文件被另一个进程使用。

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

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

谢谢。


0

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


-2

不需要做所有这一切。只需右键单击数据库文件并向所有人添加权限。那肯定会起作用。


1
实际上,这对我有用,另一种以管理员身份运行Management Studio的选项没有帮助,但是更改文件权限可以解决问题。顺便说一句-问题是关于如何解决问题的想法-所以IMO这是一个答案(尽管不是很
完美

1
授予“每个人”(实际上,这应该被理解为“世界上每个人”)许可来困扰您的数据库几乎不是解决方案,尽管它可能隐藏了真正的问题。
Oskar Berggren 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.