Restaurar backup do banco de dados pela rede
-
08-06-2019 - |
Pergunta
Como você restaura um backup de banco de dados usando o SQL Server 2005 pela rede?Lembro-me de ter feito isso antes, mas havia algo estranho na maneira como você fez isso.
Solução
O banco de dados geralmente é executado como um serviço em uma conta sem acesso à rede.Se for esse o caso, você não conseguirá restaurar diretamente pela rede.O backup precisa ser copiado para a máquina local ou o serviço de banco de dados precisa ser executado como um usuário com acesso à rede adequado.
Outras dicas
Você tem poucas opções para usar um arquivo de rede como fonte de backup
- Mapeie a unidade/caminho da rede, arquivo de hospedagem, no MESMO usuário do MS-SQL Server.
- Use o procedimento armazenado estendido xp_cmdshell para mapear a unidade de rede de dentro do MS SQL (desta forma, o shell de comando terá os mesmos privilégios que a conta do usuário executando o SSMS)
-- allow changes to advanced options
EXEC sp_configure 'show advanced options', 1
GO
-- Update currently configured values for advanced options.
RECONFIGURE
GO
-- To enable xp_cmdshell
EXEC sp_configure 'xp_cmdshell', 1
GO
-- Update currently configured values for advanced options.
RECONFIGURE
GO
EXEC xp_cmdshell 'NET USE Z: \\Srv\Path password1 /USER:Domain\UserName'
Depois dirija Z:ficará visível no Server Management Studio ou apenas
RESTORE DATABASE DataBaseNameHere FROM DISK = 'Z:\BackNameHere.BAK'
GO
Você não pode fazer isso por meio da GUI do SSMS, mas pode fazer isso usando um script.RESTORE DATABASE from DISK='\unc\path\filename' Se você precisar que esse processo seja automatizado, a melhor maneira é configurar um trabalho do SQL Server e executá-lo como um usuário com acesso ao local do arquivo.
Certifique-se de que o usuário que está executando seu SQL services
em "Services.msc"
é um diretório ativo "Domain User"
isso resolverá o problema.
Você pode usar o SP xp_cmdshell para mapear a unidade de rede para o sql server, depois disso ele aparecerá na janela de navegação de arquivos.
EXEC xp_cmdshell 'NET USE Z: SERVERLOCATION PASSWORD /USER:DOMAIN\USERNAME'
mais informações aqui: Restauração de banco de dados da unidade de rede
Funcionou para mim!
Já tive que fazer isso algumas vezes e só há duas opções que conheço.Copie o arquivo localmente para o SQL Server ou, no SQL Server, crie uma unidade de rede mapeada para o compartilhamento que contém o arquivo de backup.
Além disso, você precisa garantir que o serviço SQL Server esteja sendo executado como um usuário que tenha acesso à rede - e permissões para o compartilhamento onde reside o arquivo de backup.'Sistema Local' não terá permissões para acessar a rede.
Como observação lateral, se você estiver executando o SQL em uma máquina virtual, geralmente é menos complicado configurar temporariamente uma nova unidade na VM com espaço suficiente para copiar seus arquivos de backup, fazer a restauração dessa nova cópia local, e exclua a unidade temporária.
Isso pode ser útil se parar/iniciar o serviço SQL para alterar sua conta for um problema.
Crie uma unidade compartilhada na máquina que contém os backups, digamos que o servidor1 tenha os backups na pasta "Backups".Conceda controle total à conta que executa o SQL Server.No servidor que você deseja restaurar para iniciar o SSMS, vá restaurar o banco de dados e selecione "Do dispositivo".Na caixa de diálogo "Localizar arquivo de backup-"Servidor"" e remova qualquer coisa no campo "Caminho selecionado" e no campo "Nome do arquivo" forneça o caminho completo para "\server\backups\db.bak".Pelo menos funcionou para mim na migração de 05 para 08.Não é o método preferido porque qualquer problema de rede pode causar um problema na restauração.
EXEC sp_configure 'show advanced options', 1
GO
-- Atualize os valores atualmente configurados para opções avançadas.
RECONFIGURE
GO
-- To enable xp_cmdshell
EXEC sp_configure 'xp_cmdshell', 1
GO
-- Atualize os valores atualmente configurados para opções avançadas.
RECONFIGURE
GO
--Isso deve ser executado no prompt de comando (cmd)
NET USE Z: \\172.100.1.100\Shared Password /USER:administrator /Persistent:no
depois no SQL Server
EXEC xp_cmdshell 'NET USE Z: \\172.100.1.100\Shared Password /USER:administrator /Persistent:no'
--Depois dirija Z:ficará visível no Server Management Studio ou apenas
RESTORE DATABASE DB FROM DISK = 'Z:\DB.BAK'
WITH REPLACE