CREATE FILE encontrou o erro do sistema operacional 5 (acesso negado.)

13

Estou tentando executar o seguinte script no 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%)

Mas estou recebendo o erro:

A mensagem 5123, nível 16, estado 1, linha 2
CREATE FILE encontrou o erro do sistema operacional 5 (acesso negado.)
Ao tentar abrir ou criar o arquivo físico
'C: \ Arquivos de Programas \ Microsoft SQL Server \ MSSQL10.SQLEXPRESS \ MSSQL \ DATA \ test1.mdf '.

Msg 1802, nível 16, estado 4, linha 2
CREATE DATABASE falhou. Alguns nomes de arquivo listados não puderam ser criados. Verifique os erros relacionados.

Já tem todas as permissões de função para meu usuário, alguma idéia sobre o que está errado?

thiagocfb
fonte
1
"Seu usuário" ou o usuário em que seu serviço está sendo executado? O processo do servidor tentará criar esse arquivo, não seu usuário.
1
Você pode verificar se o arquivo já existe? (Talvez a partir de tentativas anteriores) Se existe e é aberto por SqlServer você receber um erro de acesso negado
1
Serviços-> Sql Server-> Double Click> Segundo Tab Página (conexão?)
1
@thiagocfb Iniciar-> Executar-> services.msc Percorra a lista de serviços até encontrar o SQL Server. Direito-Click> Propriedades> guia Logon
swasheck
1
Além disso, você já tentou executar uma planície CREATE DATABASE [test1]; GO?
swasheck 9/08/12

Respostas:

19

Você está recebendo um erro de permissão. A conta que está executando o SQL Server não possui os direitos necessários na pasta que conterá os arquivos do banco de dados.

Você precisa fornecer à conta que está executando o SQL Server (não a sua conta) o controle total de C: \ Arquivos de Programas \ Microsoft SQL Server \ MSSQL10.SQLEXPRESS \ MSSQL \ DATA.

mrdenny
fonte
Sim, o problema era o usuário que estava executando o serviço! :) Obrigado !
Thiagocfb 18/10/12
Em geral, o serviço Windows do SQL Server é executado sob Network Serviceconta. Portanto, os direitos apropriados deverão ser modificados nos respectivos diretórios dessa conta, se esse também for o caso no seu PC.
RBT
3
Pelo menos ao executar a GUI do SSMS como um usuário não administrador, para a operação inicial de conexão , o ID do usuário que executa o SSMS TAMBÉM deve ter permissões nessa pasta. A execução do SSMS como administrador DURING THE INITIAL ATTACH resolve isso e, em seguida, você pode executar como não administrador posteriormente sem problemas.
tbone
6

Com base em nosso tópico de comentários, parece que você pode ter ficado um pouco de lado durante a instalação. O instalador permite que você escolha o seu diretório de dados padrão e (eu supor ) define as permissões apropriadas nesse diretório para a conta de serviço que você especificou.

Na sua CREATE DATABASEdeclaração, você está especificando um local, mas esse local foi o especificado na configuração original? A conta de serviço mudou?

Uma maneira de testar isso é executar apenas um genérico

CREATE DATABASE [test1]; 
GO

Se você receber o mesmo erro, talvez a conta de serviço tenha sido alterada ou algo sobre as permissões NTFS.

Um caminho de resolução (também baseado na sequência de comentários) é confirmar que o serviço que está executando o SQL Server tem permissões de R / W no caminho que você está especificando. Para fazer isso:

Iniciar-> Executar-> services.msc-> percorra a lista de serviços até encontrar o SQL Server-> clique com o botão direito do mouse-> propriedades-> guia Logon

Agora vá e garanta que a conta tenha a permissão apropriada nesse diretório para fazer o que precisa.

swasheck
fonte
2

Parece que há um número incorreto de espaços no caminho fornecido, portanto, não está correspondendo à árvore de pastas.
Servidor SQL não criará um caminho inexistente.

Editar :
sua postagem original diz:

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

e acho que esses não são caminhos existentes e, como são classificados por dois pontos, é relevante a quantidade de espaços existentes.

Luis Siquot
fonte
número incorreto de espaços? Onde ? se eu copiar e colar este caminho em meu arquivo explorer ele vai chegar esta pasta apenas multa @ __ @
@thiagocfb então quando você abre o caminho, vê esses arquivos?
swasheck
no seu "colar", você tem 9 caracteres em um caso e 5 caracteres no outro, entre Microsoft SQLe Server, e isso foi estranho para mim, porque normalmente deveria ser apenas um caractere de espaço. Não está visível agora porque o seu post foi editado por @marc_s
@swasheck Vejo vários arquivos .mdf, não test1.mdf, é o que eu estou tentando criar com esta consulta
@Luis Siquot oh, entendi, deve ter sido um erro meu ao definir a consulta para ser mostrada como código, obrigado pelo aviso!
0

O script acima que você postou na seção de perguntas está correto. Pode ser possível que o caminho do arquivo mencionado em FILENAME esteja errado.

Por favor, use o script fornecido abaixo. Simplesmente funciona e verifique se o caminho do arquivo que você usa no seu 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
JP Chauhan
fonte