web-dev-qa-db-fra.com

CREATE FILE a rencontré l'erreur 5 du système d'exploitation (l'accès est refusé.)

J'essaie d'exécuter le script suivant dans 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%)

Mais je reçois l'erreur:

Msg 5123, niveau 16, état 1, ligne 2
CREATE FILE a rencontré l'erreur 5 du système d'exploitation (l'accès est refusé.)
lors de la tentative d'ouverture ou de création du fichier physique
'C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\test1.mdf'.

Msg 1802, niveau 16, état 4, ligne 2
CREATE DATABASE a échoué. Certains noms de fichiers répertoriés n'ont pas pu être créés. Vérifiez les erreurs associées.

Vous avez déjà toutes les autorisations de rôle pour mon utilisateur, des idées sur ce qui ne va pas?

13
thiagocfb

Vous obtenez une erreur d'autorisation. Le compte qui exécute SQL Server n'a pas les droits nécessaires sur le dossier qui contiendra les fichiers de base de données.

Vous devez donner au compte qui exécute SQL Server (pas votre compte) le contrôle total de C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA.

19
mrdenny

Sur la base de notre fil de commentaires, il semble que vous vous soyez peut-être un peu éloigné lors de l'installation. Le programme d'installation vous permet de choisir votre répertoire de données par défaut et (je voudrais supposer) définit les autorisations appropriées sur ce répertoire pour le compte de service que vous avez spécifié.

Dans ton CREATE DATABASE déclaration que vous spécifiez un emplacement, mais cet emplacement était-il celui spécifié dans la configuration d'origine? Le compte de service a-t-il changé?

Un moyen de tester cela consiste à simplement exécuter un générique

CREATE DATABASE [test1]; 
GO

Si vous obtenez la même erreur, le compte de service a peut-être changé ou quelque chose sur les autorisations NTFS a changé.

Un chemin de résolution (également basé sur la chaîne de commentaire) consiste à confirmer que le service qui exécute SQL Server dispose des autorisations R/W sur le chemin que vous spécifiez. Pour faire ça:

Démarrer-> Exécuter -> services.msc-> faites défiler la liste des services jusqu'à ce que vous trouviez SQL Server-> clic droit-> propriétés-> onglet Connexion

Allez maintenant et assurez-vous que le compte dispose de l'autorisation appropriée sur ce répertoire pour faire ce qu'il doit faire.

6
swasheck

Il semble qu'il y ait un nombre incorrect d'espaces dans le chemin d'accès fourni, il ne correspond donc pas à l'arborescence des dossiers.
Le serveur SQL ne créera pas de chemin inexistant.

Modifier :
Votre message d'origine dit:

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

et je suppose que ce ne sont pas des chemins existants, et comme ils sont entourés de deux points, il est pertinent de savoir combien d'espace il y a.

2
Luis Siquot

Le script ci-dessus que vous publiez dans votre section de questions est correct. Il est possible que le chemin de fichier que vous mentionnez dans FILENAME soit incorrect.

Veuillez utiliser le script ci-dessous. Cela fonctionne simplement, puis assurez-vous que le chemin du fichier que vous utilisez dans votre 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
0
JP Chauhan