Criei um banco de dados na minha máquina local e, em seguida, fiz um backup chamado tables.bak
de tabela DataLabTables
.
Mudei esse backup para uma máquina remota sem essa tabela e tentei fazer uma restauração, mas obtive o seguinte erro:
System.Data.SqlClient.SqlError: o sistema operacional retornou o erro '5 (Acesso negado.)' Ao tentar 'RestoreContainer :: ValidateTargetForCreation' em 'c: \ Arquivos de Programas \ Microsoft SQL Server \ MSSQL.1 \ MSSQL \ DataLabTables .mdf '.
Como faço para corrigir meus direitos, se esse é o problema?
Na mensagem de erro, ele diz que há um erro ao validar o target (
c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DataLabTables.mdf
) da sua operação de restauração.Isso soa como:
a) esse arquivo já existe (porque você já o restaurou anteriormente) e está sendo usado pelo SQL Server
ou
b) esse diretório não existe
Na sua pergunta, você mencionou que criou um backup para essa tabela - não é assim que os backups do SQL Server funcionam. Esses backups são sempre o banco de dados inteiro (ou pelo menos um ou vários grupos de arquivos desse banco de dados).
Meu palpite é: você já restaurou esse banco de dados anteriormente e agora, após uma segunda restauração, não marcou a caixa de seleção "Substituir banco de dados existente" no seu assistente de restauração - portanto, o arquivo existente não pode ser substituído e a restauração falha.
O usuário que está executando a restauração no servidor remoto obviamente não tem acesso a esse diretório no servidor remoto.C:\program files\....
é um diretório protegido - usuários normais (não administradores) não têm acesso a esse diretório (e seus subdiretórios).Solução mais fácil: tente colocar o arquivo BAK em outro lugar (por exemploC:\temp
) e restaure-o a partir daífonte
RESTORE
comando padrão falha se o arquivo existir, mesmo que não esteja sendo usado pelo SQL Server (por exemplo, o MDF / Os arquivos LDF permanecem no local após uma desanexação anterior). Eu me deparei com isso em uma implementação de envio de logs personalizada baseada em T-SQL para uma grande migração de centenas de bancos de dados nas últimas semanas. Não sei se a mensagem de erro foi "acesso negado", pode ter sido algo menos específico.Eu estava tendo o mesmo problema. Aconteceu que meus serviços
SQL Server
e estavam sendo executados na conta que não tinha acesso de gravação para executar a restauração do backup.SQL Server Agent
logon as
Network Services
Eu mudei esses dois serviços para fazer logon como
Local System Account
e isso corrigiu o problema.fonte
Recentemente, enfrentei esse problema com o SQL 2008 R2 e a solução abaixo funcionou para mim:
1) Crie um novo banco de dados com o mesmo nome que você está tentando restaurar. 2) Durante a restauração, use o mesmo nome que você usou acima e, nas opções, clique na opção substituir
Você pode tentar o exposto acima se as outras soluções não funcionarem.
fonte
Fonte
fonte
Eu tive um problema parecido. Tentei restaurar um arquivo .bak de 2005 e recebi exatamente o mesmo erro. Selecionei a opção de substituição também sem sucesso.
minha solução foi conceder ao usuário SQL acesso ao diretório em questão, indo para a pasta e editando os direitos de acesso através da tela de propriedades.
fonte
Também perdi algumas horas com esse problema. conseguiu:
"acesso negado" no meu caso realmente significava "acesso negado". A conta de usuário do mssqlstudio no meu dispositivo Windows NÃO tinha controle total da pasta especificada na mensagem de erro. eu dei controle total. o acesso não foi mais negado e a restauração foi bem-sucedida.
por que a pasta foi trancada para o estúdio? quem sabe ? Eu tenho perguntas suficientes para lidar como é, sem tentar responder mais.
fonte
Eu tive esse problema, entrei como administrador e o problema foi corrigido.
fonte
Outro cenário pode ser a existência de vários caminhos de banco de dados. Primeiro, anote o caminho em que novos bancos de dados estão sendo armazenados. Portanto, se você criar um novo banco de dados vazio e
Tasks/Restore
criar, verifique se o caminho que a restauração está tentando usar é o mesmo diretório em que o banco de dados vazio foi criado. Mesmo se o caminho de restauração for legal, você ainda terá o acesso negado erro se não for o caminho atual com o qual você está trabalhando. Muito fácil de detectar quando o caminho não é legal, muito mais difícil de detectar quando o caminho é legal, mas não o atual.fonte
Desculpe, porque não posso comentar ...
Eu tive o mesmo problema. No meu caso, o problema estava relacionado à tentativa de restauração em uma pasta antiga do servidor sql (que existia no servidor). Isso ocorre devido ao backup antigo do servidor sql (ou seja, Backup do SQL Server 2012) restaurado em um novo servidor sql (SQL Server 2014). O problema real não é muito diferente da resposta @marc_s. Enfim, mudei apenas a pasta de destino para a nova pasta de dados do SQL Server.
fonte
Esta pode não ser a melhor solução, mas eu estava tentando fazer a restauração no SQL Server 2005, mas mudei para o SQL Server 2008 e funcionou.
fonte
Tem um problema como este. Erro causado pela compactação habilitada nas pastas do SQL Server.
fonte
Frnds ... Eu tive o mesmo problema ao restaurar o banco de dados e tentei todas as soluções, mas não foi possível resolver. Então eu tentei reinstalar o SQL 2005 e o problema foi resolvido. Na verdade, da última vez que esqueci de verificar a opção de personalização enquanto instalava o SQL .. Ele vem duas vezes durante a instalação e eu o verifiquei apenas para aqueles ..
fonte
No meu caso - tive que verificar novamente o caminho de backup do banco de dados de onde estava restaurando. Eu o havia restaurado anteriormente de um caminho diferente quando o fiz pela primeira vez. Corrigi o caminho de backup para usar o caminho de backup que usei na primeira vez e funcionou!
fonte
Acabei criando novas pastas para Dados e Logs e funcionou corretamente, deve ter sido um problema de permissão de pasta / arquivo.
fonte
Isso também acontece se os caminhos estiverem corretos, mas a conta de serviço não é a proprietária dos arquivos de dados (ainda assim, ela possui direitos suficientes para acesso de leitura / gravação). Isso pode ocorrer se as permissões dos arquivos foram redefinidas para corresponderem às permissões da pasta (é claro, enquanto o serviço foi parado).
A solução mais fácil nesse caso é desanexar cada banco de dados e anexá-lo novamente (porque, ao anexar, o proprietário é alterado para ser a conta de serviço).
fonte
Tente o seguinte:
Na janela do assistente Restaurar banco de dados, vá para a guia Arquivos, desmarque a caixa de seleção "Realocar todos os arquivos para a pasta" e altere o destino da restauração de C: para outra unidade. Em seguida, continue com o processo de restauração regular. Será restaurado com sucesso.
fonte
Eu tive o mesmo problema, mas usei o sql server 2008 r2, você deve verificar as opções e verificar os caminhos em que o sql salvará os arquivos .mdf e .ldf, deve selecionar o caminho da instalação do servidor sql. Resolvi meu problema com isso, espero que ajude você.
fonte
Em seguida, tente movê-lo para uma subpasta em C :, mas verifique se o usuário tem todos os direitos sobre a pasta que você usa.
fonte