• Imprimir

Uma alternativa para fazer backup do Sql Server seria a utilização de uma unidade mapeada.

A primeira coisa que se imagina e que se mapearmos através do sistema operacional a unidade de rede teremos esta unidade disponibilizada para o Sql Server.

Isto não vai acontecer, pois você precisa mapear a unidade pela instancia do Sql Server.

Para isto teremos que habilitar a nossa velho opção ( EXEC sp_configure 'xp_cmdshell',1 ), isto pode nos trazer *vulnerabilidade,  claro que você pode ligar e desligar ao final do processo de backup.

 

Em fim vai o código ai.

 

GO

EXEC sp_configure 'show advanced options',1

GO

RECONFIGURE

GO

EXEC sp_configure 'xp_cmdshell',1

GO

RECONFIGURE

EXEC xp_cmdshell 'net use p: \\IpDoServidorRemoto\DiscoRemoto$ /user:DominioDeRede\UsuarioDeRede Senha'

-- EXEC xp_cmdshell 'net use b: \\x.x.x.x\Backup /user:usuariodebackup senhasenhasenha'

 

-- ESQUECI DE FALAR CASO VOCÊ TENHA PROBLEMAS PARA MAPEAR TALVEZ E SÓ TALVEZ VOCÊ TENHA QUE APAGAR O MAPEAMENTO ANTERIOR.

--  Exec master.dbo.xp_cmdshell 'net use b: /delete'

 

Caso ocorra um erro na restauração como :

sql server the with move clause can be used to relocate one or more files (Msg 3176)

Isto esta ocorrendo provalvelmente pq. voce esta restaurando via sql manager e seu banco possui mais de um arquivo mdf e ou ldf.

O sql manager se perde e tenta restaura os dois arquivos com o mesmo nome.

tipo assim :

 

RESTORE DATABASE [<<SEU BANCO>>] FROM  DISK = N'Z:\backup\GAO25110221v2.bak' WITH  FILE = 1,

  MOVE N'<<SEU BANCO>>' TO N'C:\BANCO\DATA\<<SEU BANCO>>.mdf',  <== AQUI ESTA O ERRO 

    MOVE N'<<SEU BANCO>>_2' TO N'C:\BANCO\DATA\<<SEU BANCO>>.mdf',  <== AQUI ESTA O ERRO  <== AQUI ESTA O ERRO 

    MOVE N'GAO_log' TO N'C:\BANCO\DATA\<<SEU BANCO>>.ldf', 

     NOUNLOAD, REPLACE, STATS = 10

GO

 

Solução, mude o segundo nome tipo assim :

 

RESTORE DATABASE [<<SEU BANCO>>] FROM  DISK = N'Z:\backup\GAO25110221v2.bak' WITH  FILE = 1,

  MOVE N'<<SEU BANCO>>' TO N'C:\BANCO\DATA\<<SEU BANCO>>.mdf',  <== AQUI ESTA O ERRO 

    MOVE N'<<SEU BANCO>>_2' TO N'C:\BANCO\DATA\<<SEU BANCO>>.mdf',  <== AQUI ESTA A SOLUÇÃO  <== AQUI ESTA A SOLUÇÃO 

    MOVE N'GAO_log' TO N'C:\BANCO\DATA\<<SEU BANCO>>.ldf', 

     NOUNLOAD, REPLACE, STATS = 10

 

*O processo de Windows gerado por xp_cmdshell tem os mesmos direitos de segurança que a conta de serviço do SQL Server.