CREATE FILE ha riscontrato l'errore 5 del sistema operativo (accesso negato.)


13

Sto cercando di eseguire il seguente 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%)

Ma sto ricevendo l'errore:

Messaggio 5123, livello 16, stato 1, riga 2
CREATE FILE rilevato errore del sistema operativo 5 (accesso negato.)
Durante il tentativo di aprire o creare il file fisico
'C: \ Programmi \ Microsoft SQL Server \ MSSQL10.SQLEXPRESS \ MSSQL \ DATA \ test1.mdf'.

Messaggio 1802, livello 16, stato 4, riga 2
CREATE DATABASE non riuscito. Non è stato possibile creare alcuni nomi di file elencati. Verifica errori correlati.

Ho già tutti i permessi di ruolo per il mio utente, qualche idea su cosa non va?


1
"Il tuo utente" o l'utente con cui viene eseguito il servizio? Il processo del server proverà a creare quel file, non il tuo utente.

1
Potresti verificare se il file esiste già? (Forse da precedenti tentativi) Se esiste ed è aperto da SqlServer si ottiene un errore di accesso negato

1
Servizi-> Sql Server-> Doppio clic-> Seconda scheda (Connessione?)

1
@thiagocfb Start-> Esegui-> services.msc Scorrere l'elenco dei servizi fino a trovare SQL Server. Fare
clic con il tasto

1
Inoltre, hai provato a gestire una pianura CREATE DATABASE [test1]; GO?
cambio

Risposte:


19

Stai ricevendo un errore di autorizzazione. L'account che esegue SQL Server non dispone dei diritti necessari sulla cartella che conterrà i file del database.

È necessario fornire all'account che esegue SQL Server (non il proprio account) il pieno controllo di C: \ Programmi \ Microsoft SQL Server \ MSSQL10.SQLEXPRESS \ MSSQL \ DATA.


Sì, il problema era l'utente che stava eseguendo il servizio! :) Grazie !
thiagocfb,

In generale, il servizio Windows SQL Server viene eseguito con l' Network Serviceaccount. Quindi i diritti appropriati dovranno essere modificati sulle rispettive directory per questo account, se questo è il caso anche sul tuo PC.
RBT

3
Almeno quando si esegue la GUI SSMS come utente non amministratore, per l'operazione di collegamento iniziale , l'id utente che esegue SSMS deve avere ANCHE autorizzazioni in quella cartella. L'esecuzione di SSMS come amministratore DURANTE L'ATTACCO INIZIALE risolve questo problema, quindi è possibile eseguirlo come non amministratore in un secondo momento senza problemi.
Osso

6

Sulla base del nostro thread di commenti sembra che potresti esserti un po 'fatto lateralmente durante l'installazione. Il programma di installazione consente di scegliere la directory dei dati predefinita e ( presumo ) imposta le autorizzazioni appropriate su quella directory per l'account del servizio specificato.

Nella tua CREATE DATABASEdichiarazione stai specificando una posizione, ma quella posizione era quella specificata nella configurazione originale? L'account del servizio è cambiato?

Un modo per testarlo è semplicemente eseguire un generico

CREATE DATABASE [test1]; 
GO

Se si ottiene lo stesso errore, forse l'account del servizio è cambiato o qualcosa delle autorizzazioni NTFS è cambiato.

Un percorso di risoluzione (anch'esso basato sulla stringa di commento) è confermare che il servizio che esegue SQL Server dispone delle autorizzazioni R / W sul percorso che si sta specificando. Per farlo:

Avvia-> Esegui-> services.msc-> scorri l'elenco dei servizi fino a trovare SQL Server-> fai clic con il pulsante destro del mouse-> proprietà-> scheda Accedi

Ora vai e assicurati che l'account disponga dell'autorizzazione appropriata su quella directory per fare ciò che deve fare.


2

Sembra che ci sia un numero errato di spazi nel percorso fornito, quindi non corrisponde all'albero delle cartelle.
Il server SQL non crea un percorso inesistente.

Modifica : il
tuo post originale dice:

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

e immagino che questi non siano percorsi esistenti, e poiché sono circondati da due punti, è rilevante quanti spazi ci siano.


numero errato di spazi? dove ? se copio e incollo questo percorso sul mio esploratore di file, raggiungerà questa cartella bene @ __ @

@thiagocfb quindi quando apri il percorso vedi quei file?
cambio

nel tuo "incolla" hai 9 caratteri in un caso e 5 caratteri nell'altro, tra Microsoft SQLe Server, e questo era strano per me perché normalmente dovrebbe essere solo un carattere spaziale. Ora non è visibile perché il tuo post è stato modificato da @marc_s

@swasheck Vedo diversi file .mdf, non test1.mdf, è quello che sto cercando di creare con questa query

@Luis Siquot oh vedo, deve essere stato un mio errore durante l'impostazione della query da mostrare come codice, grazie per l'heads-up!

0

Lo script sopra che pubblichi nella sezione delle domande è corretto. È possibile che il percorso del file menzionato in FILENAME sia errato.

Si prega di utilizzare lo script indicato di seguito. Funziona semplicemente quindi assicurati del percorso del file che usi nello 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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.