Autores Luciano Gambato e Paula Ferreira
Nesse post vamos abordar um assunto simples, porém de grande importância. Vamos exemplificar como podem ser feitos os backups de bancos de dados analíticos do SQL Server Analysis Services (SSAS).
Quando comparado com o modelo de backup de bancos dados relacionais do SQL Server, os modelos analíticos apresentam algumas diferenças. Os backups são executados utilizando um protocolo de comunicação chamado XML for Analysis (XMLA). Conectando na instância do Analysis Server é possível visualizar a opção backup:
Temos as opções: file overwrite, compression e encryptbackupfile. Essas são responsáveis por substituir no diretório de destino, comprimir e criptografar o arquivo de backup, respectivamente. Devemos definir essas configurações, conforme necessidade.
Se gerarmos o script com essa configuração, podemos observar que uma nova query XMLA é aberta. Se executarmos a mesma, será feito o backup do banco.
Podemos utilizar o SQL Agent do SQL Server para fazer o agendamento do backup, basta adicionar um passo do tipo Analysis Services Command e o comando XMLA anteriormente criado.
Vale ressaltar, que quando utilizamos XMLA não podemos utilizar uma variável dentro de tag. Por exemplo, na tag <File></File>, não podemos adicionar um parâmetro para salvar os arquivos de backup com a data de execução, por exemplo.
Para utilizar um código XMLA dinâmico, precisamos criar um Linked Server no SQL Server apontando para a instância desejada do Analysis Server. Assim, conseguimos executar através do linked Server um código T-SQL contendo o XMLA, juntamente com os parâmetros desejados. O Linked Server pode ser criado com a seguinte configuração:
Existem diversas formas de nomear o arquivo de backup, no exemplo abaixo, gravamos o número da semana e a data e hora de execução. Depois adicionamos o código em um job do SQL Agent com uma schedule para execução.
declare @XMLA varchar(500)
declare @nmFile varchar(100) = 'I:\BKP\SSASTeste_' + convert(varchar(2),datepart(week, getdate())) + '_' +convert(varchar(10),getdate(),112) + '_' + replace(convert(varchar(8),getdate(),108),':','')
set @XMLA =
'<Backup xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
<Object>
<DatabaseID>SSASTeste</DatabaseID>
</Object>
<File>'+@nmFile+'.abf</File>
</Backup>'
exec (@XMLA) at SSASTeste --Nome do Linked Server
Esperamos que este post ajude você a compreender um pouquinho mais sobre como funciona os backups de bancos de dados no Analysis Services. Assim como, que as dicas sejam úteis para a próxima vez que você precisar configurar em um banco de dados analítico. 😉