I'm trying to execute the following script in 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%)
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.
Already have all role permissions for my user, any ideas on what's wrong?
4 Answers 4
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.
-
Yep, the problem was the user that was running the service ! :) Thanks !thiagocfb– thiagocfb2012年10月18日 15:31:57 +00:00Commented Oct 18, 2012 at 15:31
-
In general SQL Server windows service run under
Network Service
account. So appropriate rights will have to modified on the respective directories for this account if that's the case on your PC as well.RBT– RBT2016年08月12日 01:42:25 +00:00Commented Aug 12, 2016 at 1:42 -
5At least when running the SSMS gui as a non-admin user, for the initial attach operation, the userid running SSMS must ALSO have permissions in that folder. Running SSMS as administrator DURING THE INITIAL ATTACH solves this, and then you can run as non-admin later without issues.tbone– tbone2017年08月28日 21:52:24 +00:00Commented Aug 28, 2017 at 21:52
-
In my case, the service account had access to the folder but I was still getting the error. Restarting the service fixed the issue. The permissions were not originally there but were added before the restart but after the error. Hope this helps someone who is at their wits end!Jana Sattainathan– Jana Sattainathan2021年05月21日 17:47:06 +00:00Commented May 21, 2021 at 17:47
-
This worked for me, I had to change the security access for the files themselves mdf and ldf to "Everyone" full control .. and it worked ( my issue was on personal computer, so no issues giving access to everyone)asmgx– asmgx2022年02月13日 17:13:55 +00:00Commented Feb 13, 2022 at 17:13
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.
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.
-
incorrect number of spaces ? where ? if i copy and paste this path on my file explorer it will reach this folder just fine @__@thiagocfb– thiagocfb2012年08月09日 20:38:47 +00:00Commented Aug 9, 2012 at 20:38
-
@thiagocfb so when you open the path do you see those files?swasheck– swasheck2012年08月09日 20:45:44 +00:00Commented Aug 9, 2012 at 20:45
-
in your "paste" you have 9 chars in one case and 5 chars in the other, between
Microsoft SQL
andServer
, 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_sLuis Siquot– Luis Siquot2012年08月09日 20:46:53 +00:00Commented Aug 9, 2012 at 20:46 -
@swasheck I see several .mdf files, not test1.mdf, it's the one I'm trying to create with this querythiagocfb– thiagocfb2012年08月09日 20:53:23 +00:00Commented Aug 9, 2012 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– thiagocfb2012年08月09日 20:54:40 +00:00Commented Aug 9, 2012 at 20:54
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
CREATE DATABASE [test1]; GO
?