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.