O backup SQL da Ola Hallengren para o local da rede não funciona

3

Eu configurei Solução de Manutenção do SQL Server de Ola Hallengren em vários Servidores SQL Express (2008 a 2012 R2) nos últimos anos. Eu comecei recentemente a ter problemas com o componente de backup de rede em todos eles um novo. Eu já tive esse trabalho em vários servidores no passado, então sei que pode funcionar, mas não consigo descobrir o que está impedindo que ele funcione agora. Como ponto de interesse, não sou um DBA e não sei quase nada sobre SQL, e é por isso que estou aqui.

O problema

Em um servidor em particular, configurei um cronograma de manutenção há cerca de um ano e meio. Ele estava fazendo backups noturnos para outro servidor local usando um caminho UNC (e vários outros comandos). O código do script é o seguinte:

sqlcmd -E -S SERVER\INSTANCE -d master -Q "EXECUTE dbo.DatabaseBackup @Databases = 'USER_DATABASES', @Directory = '\techstore1.domain.local\Backups', @BackupType = 'FULL', @Verify = 'Y', @CheckSum = 'Y', @CleanupTime = 14" -b

Isso funcionou bem por um bom tempo, mas parou de funcionar há cerca de um mês. Eu o configurei para backup localmente, depois adicionei uma string ao xcopy para o local remoto e um script no servidor remoto para limpar os backups antigos. Não ideal.

Eu tentei executá-lo na linha de comando como eu e uma conta de super permissões. Este é o erro que recebo em todos os casos:

Msg 50000, Level 16, State 1, Server SERVER\INSTANCE, Procedure DatabaseBackup, Line 384
The directory \techstore1.domain.local\Backups does not exist.

Msg 50000, Level 16, State 1, Server SERVER\INSTANCE, Procedure DatabaseBackup, Line 611
The documentation is available at http://ola.hallengren.com/sql-server-backup.html.

O que eu fiz

Obviamente, o SQL acha que a localização da rede não existe, então eu tentei o que posso para verificar se todas as coisas do lado da rede estão em ordem. Eu peguei uma nova cópia do script e recriou todos os objetos e trabalhos. Eu verifiquei se os outros scripts (verificações de integridade, atualizações de estatísticas, etc) funcionam. Eu criei um script que usa as mesmas credenciais que o script de backup para executar o xcopy dos backups locais no servidor de destino, para que eu tenha as credenciais de compartilhamento / NTFS adequadas. Essa conta é uma conta de domínio (AD) criada especificamente para backups do SQL. Eu posso fazer backup localmente (com essa conta), então eu tenho permissões de banco de dados. Eu posso navegar para o compartilhamento como a conta de backup usando o Windows Explorer. Eu posso copiar manualmente os arquivos para o local remoto usando o Windows Explorer usando a conta de backup.

Eu também recebo este mesmo problema em várias outras redes, o que me transformou em SF. Eu estou em 2008 R2 e 2012 domínios, todos os servidores são membros do domínio, sem erros relevantes. Os servidores são máquinas 2008 R2 e 2012 R2 Standard. Eu sinto que algo deve ter mudado no lado SQL que eu não posso solucionar isso para isso estar acontecendo em três redes diferentes, e vários servidores. Eu usei comandos super básicos - deixando a verificação e limpeza do trabalho - e recebo o mesmo erro. Eu aproveitei os comandos de exemplo no site da Ola como um teste também, com os mesmos resultados. Eu tentei em um novo SQL Server com um banco de dados de teste básico, sem amor. Eu usei meu cinto preto no Google por vários dias com resultados muito decepcionantes (talvez eu não saiba o que procurar?).

O que espero obter

Eu realmente apreciaria uma maneira de testar conexões com compartilhamentos de rede dentro da linha de comando do SQL, ou alguns materiais para ler que me levariam até lá. Não me importo de ler; Sou um administrador de sistemas competente que está simplesmente fora de sua profundidade nesta questão. Eu li tudo no site da Ola, e eu estou praticamente usando os comandos de exemplo literalmente de qualquer maneira (e eles funcionaram por vários meses !?). Eu estarei trabalhando nisso e neste fim de semana, e qualquer ajuda ou direção que alguém possa fornecer seria apreciada maciçamente.

    
por MagnaVis 11.10.2014 / 05:20

5 respostas

0

O problema foi resolvido. Eu criei um novo local de compartilhamento de rede, dando-lhe permissões muito abertas (todos: controle total), e o backup funciona para esse local. Seja qual for o problema, ele deve ser isolado para permissões NTFS / Share no destino. Eu não sei porque vários dos meus clientes estavam tendo o mesmo problema, mas essa correção funcionou em todos eles. Essencialmente, criei novamente todos os meus locais de backup e os compartilhei novamente. Nós podemos nunca saber o que deu errado em primeiro lugar.

Obrigado a todos que dedicaram tempo para ler e pensar sobre este assunto.

    
por 15.10.2014 / 03:06
2

Quem é o trabalho que está sendo executado? Ele está sendo executado como um usuário do domínio que tem acesso aos compartilhamentos em questão? Ou está funcionando como SA? Se estiver sendo executado como SA, ele será executado como sua conta do SQL Server Agent. Certifique-se de que o usuário que está executando o trabalho possa acessar o compartilhamento de rede em questão.

Além disso, o comando em particular deve ser SERVER\INSTANCE , não SERVER\DATABASE :

sqlcmd -E -S SERVER\INSTANCE -d master -Q "EXECUTE dbo.DatabaseBackup @Databases = 'USER_DATABASES', @Directory = '\techstore1.domain.local\Backups', @BackupType = 'FULL', @Verify = 'Y', @CheckSum = 'Y', @CleanupTime = 14" -b

(Eu não acho que causaria o erro que você está recebendo, mas ainda assim.)

    
por 13.10.2014 / 21:59
2

Eu estava diagnosticando um problema semelhante ao implementar os scripts do Ola. Funcionaria em alguns servidores e não em outros. Eu ficaria:

"Msg 50000, Level 16, State 1, Procedure DatabaseBackup, Line 395 XXX The directory does not exist."

No meu caso, o problema era que, embora o SQL Agent estivesse sendo executado em um domínio com privilégios suficientes, o próprio SQL Server não era. Em alguns casos, estava sendo executado como um serviço local.

Uma vez que eu mudei o SQL para funcionar como um domínio acct com privilégios funcionou.

Espero que isso seja útil para outra pessoa.

    
por 20.10.2015 / 02:05
0

Solução : Reinicie o serviço do agente SQL Apenas - isso funciona para nós.

Eu enfrentei o mesmo problema nos últimos dias, o procedimento armazenado dbo.DatabaseBackup não é capaz de identificar os atributos \ pasta corretos, razão pela qual ele gerou um erro de que seu local de backup não pode ser acessado pelo domínio usuário no qual os serviços do SQL Agent estão em execução.

Snippet de código do procedimento armazenado dbo.DatabaseBackup :

If object_ID(N'tempdb.dbo.#File_Results') is not NULL
    Drop table #File_Results;

CREATE TABLE #File_Results (
File_Exists int,
File_is_a_Directory int,
Parent_Directory_Exists int
)

DECLARE @FileName varchar(255)
SET @FileName='\DBLIVEBACKUPS\Dump$$'

INSERT INTO #File_Results
EXEC Master.dbo.xp_fileexist @FileName

SELECT * FROM #File_Results

Estamos recebendo os parâmetros corretos para diferentes locais de rede no mesmo servidor.

    
por 25.01.2017 / 07:24
-1

O seguinte deve corrigir esse problema. Defina o usuário do SQL Server E o SQL Server Agent em ambos o compartilhamento e as pastas como Alterar para o compartilhamento e Modificar para a segurança.

    
por 19.06.2015 / 13:42