Take the 2-minute tour ×
Database Administrators Stack Exchange is a question and answer site for database professionals who wish to improve their database skills and learn from others in the community. It's 100% free, no registration required.

I'm trying to execute the following script in SQL Server Management Studio but I'm getting the error:

Msg 5123, Level 16, State 1, Line 2
CREATE FILE encountered operating system error 5 (Access is denied.) while attempting to open or create the physical file 'C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\test1.mdf'.
Msg 1802, Level 16, State 4, Line 2
CREATE DATABASE failed. Some file names listed could not be created. Check related errors.

Script :

USE [master]
GO
/****** Object:  Database [bioenergiasIpad]    Script Date: 08/07/2012 17:01:19 ******/
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%)
GO

Already have all role permissions for my user, any ideas on what's wrong ?

Thanks !

share|improve this question
1  
"Your user" or the user your service is running as? The server process will try to create that file, not your user. –  BoeroBoy Aug 9 '12 at 20:23
1  
Could you check if the file already exists? (Perhaps from previous attempts) If exists and is opened by SqlServer you get an access denied error –  Steve Aug 9 '12 at 20:25
1  
Services->Sql Server->Double Click->Second Tab Page (Connection?) –  Steve Aug 9 '12 at 21:02
1  
@thiagocfb Start->Run->services.msc Scroll through the list of services until you find SQL Server. Right-Click->Properties->Log On tab –  swasheck Aug 9 '12 at 21:02
1  
Also, have you tried just running a plain CREATE DATABASE [test1]; GO? –  swasheck Aug 9 '12 at 21:03
show 7 more comments

migrated from stackoverflow.com Aug 9 '12 at 22:08

This question came from our site for professional and enthusiast programmers.

4 Answers

up vote 6 down vote accepted

You are getting a permissions error. The account which is running the SQL Server doesn't have the needed rights on the folder which will contain the database files.

You need to give the account which is running SQL Server (not your account) full control of C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA.

share|improve this answer
    
Yep, the problem was the user that was running the service ! :) Thanks ! –  thiagocfb Oct 18 '12 at 15:31
add comment

Based on our comment thread it sounds like you may have gotten yourself a bit sideways during install. The installer allows you to choose your default data directory and (I would assume) sets the appropriate permissions on that directory for the service account that you specified.

In your CREATE DATABASE statement you're specifying a location, but was that location the one that was specified in the original setup? Has the service account changed?

A way to test this is to just run a generic

CREATE DATABASE [test1]; 
GO

If you get the same error then perhaps the service account has changed or something about the NTFS permissions has changed.

A resolution path (also based on comment string) is to confirm that the service that is running SQL Server has R/W permissions on the path that you're specifying. To do this:

Start->Run->services.msc->scroll through the list of services until you find SQL Server->right-click->properties->Log On tab

Now go and ensure that account has the appropriate permission on that directory to do what it needs to do.

share|improve this answer
add comment

Seems there are incorrect number of spaces in the supplied path, so, it is not matching folders tree.
Sql server won't create an non existing path.

Edit:
Your original post says:

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

and I guess this are not existing paths, and as they are sorounded by colons, it is relevant how much spaces are there.

share|improve this answer
    
incorrect number of spaces ? where ? if i copy and paste this path on my file explorer it will reach this folder just fine @__@ –  thiagocfb Aug 9 '12 at 20:38
    
@thiagocfb so when you open the path do you see those files? –  swasheck Aug 9 '12 at 20:45
    
in your "paste" you have 9 chars in one case and 5 chars in the other, between Microsoft SQL and Server, and this was strange to me because normaly it should be only one space character. It is not visible now because your post was edited by @marc_s –  Luis Siquot Aug 9 '12 at 20:46
    
@swasheck I see several .mdf files, not test1.mdf, it's the one I'm trying to create with this query –  thiagocfb Aug 9 '12 at 20:53
    
@Luis Siquot oh I see, must have been a mistake of mine while setting the query to be shown as code, thanks for the heads-up ! –  thiagocfb Aug 9 '12 at 20:54
add comment

The above script that you post in your question section is correct. It might be possible that the file path that you mention in FILENAME could be wrong.

Please use the script given below. It simply works then make sure the file path that you use in your script.

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
share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.