CREATE FILE遇到操作系统错误5(访问被拒绝。)


13

我正在尝试在SQL Server Management Studio中执行以下脚本:

USE [master]
GO

CREATE DATABASE [test1] ON PRIMARY (
  NAME = N'test1', 
  FILENAME =
    N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\test1.mdf',
  SIZE = 70656KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB)
LOG ON (
  NAME = N'test1_log',
  FILENAME =
    N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\test1_log.ldf',
  SIZE = 164672KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)

但是我得到了错误:

尝试打开或创建物理文件 'C:\ Program Files \ Microsoft SQL Server \ MSSQL10.SQLEXPRESS \ MSSQL \时,消息5123,级别16,状态1,第2行
CREATE FILE遇到操作系统错误5(访问被拒绝。)DATA \ test1.mdf'。

消息1802,级别16,状态4,第2行
CREATE DATABASE失败。列出的某些文件名无法创建。检查相关错误。

已经拥有我的用户的所有角色权限,有什么问题的想法吗?


1
“您的用户”还是您的服务运行的用户?服务器进程将尝试创建该文件,而不是您的用户。

1
您可以检查文件是否已经存在吗?(可能是从以前的尝试)如果存在且SqlServer的打开你得到一个拒绝访问的错误

1
服务-> Sql Server->双击->第二个标签页(连接?)

1
@thiagocfb Start-> Run-> services.msc滚动浏览服务列表,直到找到SQL Server。右键
单击

1
另外,您是否尝试过仅运行普通格式CREATE DATABASE [test1]; GO
swasheck 2012年

Answers:


19

您收到权限错误。运行SQL Server的帐户对包含数据库文件的文件夹没有所需的权限。

您需要授予正在运行SQL Server的帐户(而不是您的帐户)对C:\ Program Files \ Microsoft SQL Server \ MSSQL10.SQLEXPRESS \ MSSQL \ DATA的完全控制。


是的,问题出在运行服务的用户!:) 谢谢 !
thiagocfb 2012年

通常,SQL Server Windows服务在Network Service帐户下运行。因此,如果您的PC也是如此,则必须在此帐户的相应目录上修改适当的权限。
RBT

3
至少在以非管理员用户身份运行SSMS gui时,对于初始附加操作,运行SSMS的用户ID还必须对该文件夹具有权限。在初始连接期间以管理员身份运行SSMS可以解决此问题,然后您以后可以以非管理员身份运行而不会出现问题。
tbone

6

根据我们的评论主题,听起来您在安装过程中可能有点偏心。安装程序允许您选择默认的数据目录,然后(我假设)在该目录上为您指定的服务帐户设置适当的权限。

在您的CREATE DATABASE陈述中,您要指定一个位置,但是该位置是否是原始设置中指定的位置?服务帐户是否已更改?

一种测试方法是仅运行通用

CREATE DATABASE [test1]; 
GO

如果您收到相同的错误,则可能是服务帐户已更改,或者有关NTFS权限的更改。

解析路径(同样基于注释字符串)用于确认运行SQL Server的服务对您指定的路径具有R / W权限。去做这个:

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

现在,请确保该帐户对该目录具有适当的权限以执行所需的操作。


2

似乎提供的路径中的空格数量不正确,因此,它与文件夹树不匹配。
SQL Server不会创建不存在的路径。

编辑
您的原始帖子说:

...\Microsoft SQL         Server\...
...\Microsoft SQL     Server\...

而且我猜这不是现有的路径,因为它们被冒号包围了,所以这里有多少空间是重要的。


不正确的空格数?在哪 如果我将此路径复制并粘贴到我的文件资源管理器中,它将很好地到达该文件夹@ __ @

@thiagocfb,所以当您打开路径时,您会看到那些文件吗?
swasheck

在您的“粘贴”中,在Microsoft SQL和之间,在一种情况下有9个字符,在另一种情况下有5个字符Server,这对我来说很奇怪,因为通常它应该只是一个空格字符。现在不可见,因为您的帖子由@marc_s编辑

@swasheck我看到几个.mdf文件,而不是test1.mdf文件,这是我正在尝试使用此查询创建的文件

@Luis Siquot哦,我知道,在将查询设置为代码时一定是我的一个错误,谢谢大家的注意!

0

您在问题部分中发布的上述脚本是正确的。您在FILENAME中提到的文件路径可能有误。

请使用下面给出的脚本。它只是可以正常工作,然后确保您在脚本中使用的文件路径。

Use Master
go

CREATE DATABASE test1 ON  PRIMARY 
( NAME = N'test1', 
  FILENAME = N'D:\test1.mdf', 
  SIZE = 70656KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1014KB)
 LOG ON 
( NAME = N'test1_log', 
  FILENAME = N'D:\test1_log.ldf', 
  SIZE = 164671KB , MAXSIZE = 1048GB , FILEGROWTH = 10%)
GO
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.