Estou começando a aprender SQL e tenho um livro que fornece um banco de dados para trabalhar. Esses arquivos abaixo estão no diretório, mas o problema é que, quando executo a consulta, ocorre o seguinte erro:
Mensagem 5120, nível 16, estado 101, linha 1 Não é possível abrir o arquivo físico "C: \ Murach \ SQL Server 2008 \ Databases \ AP.mdf". Erro do sistema operacional 5: "5 (acesso negado.)".
CREATE DATABASE AP
ON PRIMARY (FILENAME = 'C:\Murach\SQL Server 2008\Databases\AP.mdf')
LOG ON (FILENAME = 'C:\Murach\SQL Server 2008\Databases\AP_log.ldf')
FOR ATTACH
GO
No livro, o autor diz que deve funcionar, mas não está funcionando no meu caso. Eu procurei, mas não sei exatamente qual é o problema, então postei esta pergunta.
sql
sql-server
dijai jijfs
fonte
fonte
Respostas:
A conta de serviço do mecanismo de banco de dados do SQL Server deve ter permissões para ler / gravar na nova pasta.
Confira isso
fonte
Administrators Group
MSSQL$SQLEXPRESS
), pode não ser óbvio que você precise adicionar a conta à lista de permissões de pasta como:NT Service\MSSQL$SQLEXPRESS
Uma publicação antiga, mas aqui está um passo a passo que funcionou para o SQL Server 2014 em execução no Windows 7:
Voilá!
Eu acho que definir a conta de logon pode ter sido uma opção na instalação, mas se não, não era o padrão e era fácil perder se você ainda não estava ciente desse problema.
fonte
Para contornar o problema de acesso negado, iniciei o SSMS como administrador e isso me permitiu anexar um banco de dados da minha unidade local. O banco de dados foi criado em outra instância do SQL e do Windows.
fonte
Esse é um problema relacionado ao Windows, no qual o SQL Server não tem a permissão apropriada para a pasta que contém o arquivo .bak e, portanto, esse erro.
A solução mais fácil é copiar o arquivo .bak para o local de backup padrão do SQL, que possui todas as permissões necessárias. Você não precisa mexer em mais nada. No SQL SERVER 2012 , esse local é
fonte
Eu tive esse problema. Basta executar o SQL Server como administrador
fonte
Sim, está certo. Primeiro, você deve descobrir sua conta de serviço do sqlserver, pode vê-la no Gerenciador de Tarefas ao pressionar ctrl + alt + delete ao mesmo tempo; depois, você deve conceder o privilégio de leitura / gravação de "C : \ Murach \ SQL Server 2008 \ Databases "para a conta de serviço.
fonte
O problema é devido à falta de permissões para o SQL Server acessar os arquivos mdf e ldf. Todos estes procedimentos funcionarão:
fonte
Eu resolvo esse problema adicionando
Full control
permissão para arquivos.mdf
e.ldf
para oUsers
grupo.fonte
Para mim, foi resolvido da seguinte maneira com o SQL Server Management studio - Entre como administrador (entrei como autenticação do Windows) - Anexe o arquivo mdf (clique com o botão direito do mouse em Banco de dados | anexar | Adicionar) - Saia como administrador - Entre como usuário normal
fonte
As permissões reais do servidor não importam neste momento; tudo parece ok. O próprio SQL Server precisa de permissões de pasta.
dependendo da sua versão, você pode adicionar permissões SERVERNAME $ MSSQLSERVER para tocar sua pasta. Caso contrário, ele deverá estar no diretório BACKUP padrão (onde você o instalou ou usar como padrão c: \ programfiles (x) \ MSSQL \ BACKUP.
fonte
Mesmo se você seguir as etapas a seguir, poderá receber a mesma mensagem de erro.
Ainda obtive o erro de permissão, mas notei que na tela Anexar, a seção inferior AINDA mostrava o arquivo LOG e a mensagem de erro permanecia a mesma.
Espero que isso ajude alguém que fez a mesma coisa.
fonte
Solução muito simples.
fonte
Eu usei o Entity Framework no meu aplicativo e tive esse problema, configurei qualquer permissão nos serviços de pastas e janelas e não funcionou. Depois disso, inicio meu aplicativo como administrador (clique com o botão direito do mouse no arquivo exe e selecione "executar como administrador") e isso funciona bem.
fonte
Se você receber esse erro em um
.MDF
arquivo naAPP_DATA
pasta (ou onde quer que você o tenha colocado) para um projeto do Visual Studio, a maneira como fiz foi copiar as permissões daDATA
pasta existente aqui (estou usando o SQL Express 2014 para oferecer suporte) um aplicativo mais antigo):(observação: seu caminho de instalação real pode variar - especialmente se o nome da sua instância for diferente)
Clique duas vezes na
DATA
pasta primeiro como administrador para garantir que você tenha acesso, abra as propriedades na pasta e imite as mesmas para aAPP_DATA
pasta. No meu caso, o usuário ausente eraMSSQL$SQLEXPRESS2014
(porque eu nomeei a instânciaSQLEXPRESS2014
- a sua pode ser diferente). Esse também é o nome de usuário do serviço SQL Server.fonte
Por algum motivo, definir todas as permissões corretas não ajudou no meu caso. Eu tinha um arquivo
db.bak
que não consegui restaurar devido ao5(Access is denied.)
erro. O arquivo foi colocado na mesma pasta que vários outros arquivos de backup e todas as permissões eram idênticas a outros arquivos. Consegui restaurar todos os outros arquivos, exceto estedb.bak
arquivo. Até tentei alterar o log de serviço do SQL Server no usuário - ainda o mesmo resultado. Eu tentei copiar o arquivo sem efeito.Então tentei criar um arquivo idêntico executando
em vez de copiar o arquivo. E pronto, funcionou!
db2.bak
restaurado com sucesso.Suspeito que alguns outros problemas com a leitura do arquivo de backup possam ser relatados erroneamente como
5(Access is denied.)
no MS SQL.fonte
No linux, fui para a
/var/opt/mssql/data/
pasta e abri um terminalsudo
, alterei minhas permissões de arquivo * .mdf e * .ldf conforme abaixo, nas quais você substituiyourDB
pelo nome do arquivo do banco de dados emyUser
pelo nome de usuário atualmente registrado:Depois disso, foi reconectado sem nenhum problema.
fonte
Isso significa que o usuário de login do SSMS não tem permissão no arquivo .mdf. É assim que funcionou para mim:
Eu tinha aberto o SSMS (Executar como administrador) e logado como usuário administrador, banco de dados clique com o botão direito do mouse em anexar, clique em adicionar, selecione o arquivo .mdf, clique em OK. Feito.
fonte