Não é possível abrir o dispositivo de backup. Erro no sistema operacional 5

138

Abaixo está a consulta que estou usando para fazer backup (criar a .bak) meu banco de dados.

No entanto, sempre que o executo, sempre recebo esta mensagem de erro:

A mensagem 3201, nível 16, estado 1, linha 1
não pode abrir o dispositivo de backup 'C: \ Users \ Me \ Desktop \ Backup \ MyDB.Bak'. Erro do sistema operacional 5 (acesso negado.).

A mensagem 3013, nível 16, estado 1, linha 1
BACKUP DATABASE está sendo finalizada de maneira anormal.

Esta é a minha consulta:

BACKUP DATABASE AcinsoftDB
TO DISK = 'C:\Users\Me\Desktop\Backup\MyDB.Bak'
WITH FORMAT,
MEDIANAME = 'C_SQLServerBackups',
NAME = 'Full Backup of MyDB';
risonho
fonte
Bem, a mensagem de erro é bastante clara, não é? Qual usuário o programa está sendo executado? O arquivo bak existe? Você pode acessá-lo manualmente?
Pekka
1
Devemos assumir que isso é para o SQL Server a partir do caminho do arquivo, pois você não colocou o produto nas tags ou no título?
Powerlord
Consegui executar essa consulta antes de reformatar o meu laptop, se ele tiver alguma ajuda. Este é o SQL Server 2008 e estou sendo executado como administrador. O arquivo bak não existe, pois estou no processo de criá-lo com esta consulta.
Smiley
@ Smiley Face: Você tem que ler o arquivo SQL através do seu local, não da rede. Portanto, significa que você precisará mover o arquivo SQL da rede para a unidade local primeiro e restaurá-lo.
precisa saber é o seguinte
sqlbak.com/blog/…
Shiwangini 7/19/19

Respostas:

234

Sim, acabei de marcar este.

Procure nos Serviços do Windows. Iniciar> Administração> Serviços

Encontre o serviço na lista chamada: SQL Server (MSSQLSERVER) procure a coluna "Logon como" (é necessário adicioná-lo se ele não existir na lista).

Esta é a conta que você precisa para conceder permissões ao diretório, clique com o botão direito do mouse em explorer> propriedades> Compartilhamentos (e segurança)

NOTA : Lembre-se de conceder permissões ao diretório real E ao compartilhamento se você estiver navegando pela rede.

Aplique e aguarde a propagação das permissões, tente o backup novamente.

NOTA 2 : se você estiver fazendo backup na rede e seu SQL estiver sendo executado como "Serviço Local", estará com problemas ... poderá tentar atribuir permissões ou poderá ser mais fácil fazer backup localmente e xcopy fora do SQL Server ( uma hora depois).

NOTA 3 : Se você estiver executando como serviço de rede, algumas vezes a máquina remota não reconhecerá o serviço de rede no SQL Server. Se for esse o caso, você precisará adicionar permissões para o próprio computador, por exemplo. MyServer $.

Robin Vessey
fonte
20
As permissões / add / advanced não encontraram o usuário na lista, mas colei em "NT Service \ MSSQLSERVER" e funcionou como um campeão.
Mark A
3
Adicionar permissão de 'todos' a uma pasta cobre isso?
DevDave 28/05
3
Depende, se for o verdadeiramente público não autenticado, então sim. Se for o "qualquer autenticado", o SERVIÇO LOCAL em uma máquina remota normalmente não se qualificará ... mas você realmente deseja conceder acesso a todos, para nós, que é uma ofensa quase imperceptível.
Robin Vessey
1
Não funcionou para mim e estou apenas fazendo backup em C: \ temp \. A tela Permissões de pasta simplesmente não reconhecia o Logon usado pelo serviço, NT Service \ MSSQLSERVER , mesmo ao colar como @Mark A sugerido. Existe uma boa conta alternativa para esse serviço usar?
MGOwen
8
Trabalhou para mim, ótima solução! Como estou usando o SQL Server Express 2014, você precisará conceder permissão de gravação para 'NT Service \ MSSQL $ SQLEXPRESS'.
precisa saber é o seguinte
11

Vá para a pasta do servidor SQL no menu Iniciar e clique em Ferramentas de configuração. Selecione Gerenciador de configuração do SQL Server.

Abuleen
fonte
7

A conta de serviço do SQL Server não tem permissões para gravar na pasta C:\Users\Kimpoy\Desktop\Backup\

Martin Smith
fonte
22
como concedo à conta de serviço do SQL Server permissões para acessar esta pasta? :)
Smiley
6

Também tive esse problema recentemente, porém estava executando o trabalho de backup do servidor A, mas o backup do banco de dados estava no servidor B para um compartilhamento de arquivos no servidor C. Quando o agente no servidor A diz ao servidor B para executar um backup t -sql, na verdade é a conta de serviço em que o sql está sendo executado no SERVER B que tenta gravar o backup no servidor C.

Lembre-se de que é a conta de serviço do servidor sql que executa o comando BACKUP DATABASE real é o que precisa de privilégios no sistema de arquivos, não no agente.

Jason
fonte
4

Eu mesmo estava passando por isso. Eu tinha garantido que meu usuário de login do MSSQLSERVER tivesse, full accessmas ainda estava causando problemas. Só funcionou depois que eu mudei o destino para a raiz do C. Mais importante, fora de uma pasta de usuário (mesmo que eu tivesse um compartilhamento com permissões completas - até tentei "Todos" como teste).

Não sei se considero meu problema "corrigido", mas está "funcionando".

Apenas um FYI para qualquer outro usuário que se deparar com esse segmento.

DNK
fonte
1
Eu acho que isso é causado por domínios corporativos que possuem caminhos de usuário que residem em unidades de rede, para que possam ser acessados ​​pelo usuário de forma transparente, independentemente da máquina em que efetuam login. Como esta situação: superuser.com/a/730519
Bon
@ Bon Thanks! Isso resolveu o problema para mim. O caminho no qual eu tinha o arquivo de backup era na verdade um caminho de rede.
JonM
4

Eu enfrento o mesmo problema com o SQL Express 2014 SP1 no Windows 10.

Solução que funciona

  1. Abra o Serviço digitando Serviços
  2. Localize e abra o SQL Server (SQLExpress)
  3. Vá para a guia Logon
  4. Escolha Conta do sistema local (verifique também se os serviços permitem interagir com a área de trabalho)
  5. Clique OK . Pare o serviço. Reinicie o serviço.
  6. Problema resolvido
Sawarkar vikas
fonte
3

Para descobrir qual usuário você precisa dar permissão para executar o processo de restauração, siga as seguintes etapas:

Você precisa ir ao seu servidor onde o SQL Server está instalado. Encontre o SQL Server Configuration Manager

insira a descrição da imagem aqui

Em seguida, você precisa ir para "Serviços do SQL Server"

insira a descrição da imagem aqui

Sob sua instância do SQL Server (MSSQLSERVER), haverá uma conta com a coluna "Logon como", no meu caso, é NT Service \ MSSQLSERVER .

Essa é a conta que você precisa adicionar na guia Segurança do seu local de origem .bak e conceder a esse usuário as permissões "Ler" para que o arquivo de backup possa ser lido.

Digamos que seu arquivo de backup esteja presente na pasta "D: \ Shared", então você precisa dar permissões como esta:

insira a descrição da imagem aqui

Raghav
fonte
2

Eu tive uma questão semelhante. Adicionei permissões de gravação ao próprio arquivo .bak e à minha pasta na qual eu estava gravando o backup para o usuário do NETWORK SERVICE. Para adicionar permissões, clique com o botão direito do mouse no arquivo / diretório que você deseja alterar, selecione a guia segurança e adicione os usuários / permissões apropriados.

Eric Bernier
fonte
1
o que você quer dizer com apropriado?
Steam
2

Aqui está o que eu fiz para ignorar a questão.

1) Vá para o backup

2) Remova o caminho do arquivo de destino para o disco

3) Clique em Adicionar

4) Na caixa Nome do arquivo: digite manualmente o nome do backup depois de .. \ backup como abaixo, onde Yourdb.bak é o nome do backup do banco de dados

C: \ Arquivos de programas \ Microsoft SQL Server \ MSSQL11.MSSQLSERVER \ MSSQL \ Backup \ Yourdb.bak

5) Clique em OK

Espero que isto ajude!

dpen82
fonte
2

Uma das razões pelas quais isso acontece é que você está executando o serviço MSSQLSERVER e não está usando um sistema local. Para corrigir esse problema, use as seguintes etapas.

  1. Execução aberta usando Windows + R
  2. Digite services.msc e uma caixa de diálogo de serviços será aberta
  3. Encontre o SQL Server (MSSQLSERVER)
  4. Clique com o botão direito e clique nas propriedades.
  5. Vá para a guia Logon
  6. Selecione a conta do sistema local e clique em "Aplicar" e "OK"
  7. Clique no link Parar no painel esquerdo, selecionando o "SQL Server (MSSQLSERVER)" e inicie novamente uma vez completamente parado.
  8. Aproveite o seu backup.

Espero que ajude você bem, como fez comigo. Felicidades!

Gaurav Amatya
fonte
1

Eu sei que não é uma solução exata, mas o uso de caminhos de unidade externos resolve esse problema.

BACKUP DATABASE AcinsoftDB
TO DISK = 'E:\MyDB.Bak'
WITH FORMAT,
MEDIANAME = 'C_SQLServerBackups',
NAME = 'Full Backup of MyDB';
Cem Mutlu
fonte
1

O SQL Server não pode acessar (gravar) o backup no local especificado.

Primeiro, você precisa verificar a conta de serviço na qual o servidor Sql está sendo executado. Isso pode ser feito usando o Gerenciador de configuração ou o Services.msc.

ou

Use a consulta abaixo:

SELECT  DSS.servicename,
    DSS.startup_type_desc,
    DSS.status_desc,
    DSS.last_startup_time,
    DSS.service_account,
    DSS.is_clustered,
    DSS.cluster_nodename,
    DSS.filename,
    DSS.startup_type,
    DSS.status,
    DSS.process_id FROM    sys.dm_server_services AS DSS;

Agora olhe para a coluna service_account e anote-a.

Vá para o local em que você está tentando fazer o backup. No seu caso: C: \ Users \ Me \ Desktop \ Backup

Clique com o botão direito do mouse -> Propriedades -> Segurança ->

Adicione a conta de serviço e forneça permissões de leitura / gravação. Isso resolverá o problema.

Ramakant Dadhichi
fonte
0

A mensagem 3201, nível 16, estado 1, linha 1 não pode abrir o dispositivo de backup 'C: \ Backup \ Adventure_20120720_1024AM.trn'. Erro do sistema operacional 5 (acesso negado.). A mensagem 3013, nível 16, estado 1, linha 1 BACKUP LOG está sendo finalizada de maneira anormal.

Verifiquei a pasta de backup na unidade C, a nova conta de serviço está com permissão de acesso de controle total ou não ?, percebi que a conta de serviço "Test \ Kiran" não está com a permissão de segurança de controle total.

Siga as etapas abaixo para dar controle total à conta de serviço:

  1. Vá para a unidade C, clique com o botão direito na pasta Backup.
  2. Selecione a guia Segurança.
  3. Clique no botão Editar, uma nova janela será aberta.
  4. Clique no botão Adicionar e digite a conta de usuário Test \ Kiran e clique no botão verificar nome, isso validará se o usuário digitado é existente ou não; se existir, ele exibirá o usuário na janela, selecione OK.
  5. Selecione o nome do usuário digitado e marque a caixa de seleção Controle Total em Permitir.
user2459051
fonte
0

Verifique o acesso às unidades. Primeiro, crie uma pasta e vá para as propriedades da pasta,

Você pode encontrar a guia de segurança, clique nessa verificação se o seu ID de usuário tem acesso ou não.

se não encontrar o seu ID, clique no botão Adicionar e forneça o nome de usuário com acesso total.

user2703575
fonte
0

Compartilhe esta pasta e use o caminho UNC, por exemplo: \ pc \ backups \ mydb.bak

Então você pode parar de compartilhar.

Não é muito elegante, mas resolve todos os problemas de permissões (você também precisa fornecer permissões para compartilhar, como mencionado acima)

Gennady G
fonte
0

Tive esse problema quando o arquivo .BAK foi temporariamente armazenado em uma pasta criptografada com o BitLocker. Ele manteve a criptografia depois que foi movido para uma pasta diferente.

A conta de serviço de rede não conseguiu descriptografar o arquivo e deu essa mensagem de erro completamente informativa.

A remoção da criptografia do BitLocker (desmarcando "Criptografar o conteúdo para proteger dados" nas propriedades do arquivo) no arquivo .BAK resolveu o problema.

Eric J.
fonte
0

Eu tenho o mesmo erro. As seguintes alterações me ajudaram a corrigir isso.

Eu tive que verificar o Gerenciador do Servidor-> Ferramenta-> Serviços e encontrar o usuário (coluna "Logon Como") para o serviço: SQL Server (SQLEXPRESS).

Eu fui para a pasta local (C: \ Users \ Me \ Desktop \ Backup) e adicionei "NT Service \ MSSQL $ SQLEXPRESS" como o usuário para conceder permissões de gravação.

Hiren Parghi
fonte
0

Olá, você precisa alterar a consulta de:

BACKUP DATABASE AcinsoftDB
TO DISK = 'C:\Users\Me\Desktop\Backup\MyDB.Bak'

para

BACKUP DATABASE AcinsoftDB
TO DISK = N'C:\Users\Me\Desktop\Backup\MyDB.Bak'

Você tem que adicionar um N na frente do caminho funciona para mim.

Robert Peter Bronstein
fonte
0

No meu caso, esqueci-me de nomear o arquivo de backup e ele continuou me dando o mesmo erro de permissão: /

TO DISK N'{path}\WRITE_YOUR_BACKUP_FILENAME_HERE.bak'
Brigante
fonte
0

Resolvi o mesmo problema com as 3 etapas a seguir:

  1. Eu armazeno meu arquivo de backup em outro caminho de pasta que funcionou corretamente.
  2. Veja diferentes pastas da guia Segurança (como na imagem abaixo).
  3. Edite a permissão na pasta da guia de segurança que não funcionou corretamente.

insira a descrição da imagem aqui

Mohsen Najafzadeh
fonte