Estou tentando exportar um plano de manutenção simples de uma instância do SQL Server.
Desejo verificar a exportação no controle de origem e aplicar o plano de manutenção exportado a instâncias funcionalmente idênticas.
O StackOverflow e o SQL Server Newbie recomendam o uso do Integration Services para exportar o plano de manutenção.
Quando tento conectar-me ao Integration Services no destino de exportação, recebo o seguinte erro:
A conexão ao serviço do Integration Services no computador "WEBSERVER" falhou com o seguinte erro: O serviço especificado não existe como um serviço instalado.
Optamos por desabilitar os Serviços de Integração no WEBSERVER porque usamos essa caixa apenas para fornecer dados a aplicativos de consumo. Todos os dados no WEBSERVER são replicados de uma instância de back-end. O Integration Services é usado fortemente para processar dados na instância de back-end.
Existe uma maneira documentada de exportar um plano de manutenção sem usar o Integration Services? A Microsoft suporta isso?
fonte
dtutil
- o que é construído em volta - é basicamente desativado caso contrário, mesmo que esteja presente. Algumas versões do SQL Server (como a Web Edition) não permitem a instalação completa do SSIS, mesmo que os Planos de manutenção usem essencialmente quase toda a funcionalidade do SSIS. (No entanto, existe um hack para contornar isso, supondo que você tem duas versões do SQL Server, um dos quais não é prejudicadas -. Ver minha resposta abaixo)Existe uma maneira de fazer isso.
Suponha que, como o OP, você tenha duas instâncias do SQL Server, uma das quais com o SSIS instalado e a outra não (provavelmente não pode, por exemplo, se for o SQL Server Web Edition).
Escreva um procedimento armazenado que copie as linhas do plano de manutenção do usuário do servidor com hobbled para o sem hobbled. As linhas relevantes são:
Você precisaria escrever este SP para excluir todas as linhas com as correspondências
id
primeiro e depois inserir as versões mais recentes (ou uma abordagem semelhante, por exemplo,UPDATE
correspondendoid
s, depoisINSERT
faltandoid
s). E você precisará configurar um servidor vinculado de um ou outro lado, para poder escrever SQL que endereça os dois servidores.É isso mesmo, na verdade, você pode chamar isso regularmente ... de um plano de manutenção, por exemplo ... e fazer backup de todos os planos de manutenção do lado não prejudicado.
É um hack maciço, é claro, mas na verdade funciona. (Imagino que seja muito importante que o número da versão do SQL Server seja o mesmo nos dois lados, para que os dados
msdb.dbo.sysssispackages
sejam tão compatíveis entre as diferentes instâncias do servidor quanto realmente parecem).Você sempre pode fazer o backup direto das linhas relevantes da tabela de banco de dados do SSIS, é claro. Isso funcionaria de qualquer maneira - como uma resposta completa para a pergunta original. Como afirmado, isso não tem nada a ver com pressupor o SSIS - apenas pressupõe planos de manutenção!
Portanto, esse é um método leve e suportado, que funciona sem o SSIS em qualquer lugar do sistema. A vantagem do método mais complexo e invasivo acima é que ele fornece planos exportados em um formato padrão, não apenas como linhas de dados simples; então acho que é muito mais provável que seja importável para uma versão diferente do SQL Server, posteriormente.
fonte
Eu tenho lutado com o mesmo problema exato. Aqui está o principal take-away:
Não são necessários serviços de integração no seu WEBSERVER. Uma maneira documentada é usar o DTUTIL. Basta usar QUALQUER SQL Server (mesmo a edição gratuita para desenvolvedores com todos os recursos da empresa) que possui o Integration Services instalado para copiar os Pacotes de Manutenção do SQL Server de uma origem para um destino - mesmo que não seja a origem ou o destino do pacote, conforme mostrado em Exemplo A.
Exemplo A: Execute o DTUTIL no SQL Server MySSISServerA para copiar um Pacote de Manutenção SQL do MySourceServerB para o MyDestServerC .
fonte
ANY
= mesma versão, caso contrário, dtutil irá atualizar o plano para vCurrentDê uma olhada em:
Como transferir (copiar) planos de manutenção de um servidor para outro? por Sreekanth Bandarla
Parafraseando e resumindo:
No SSMS, em vez de se conectar ao "Mecanismo de Banco de Dados ...", conecte-se ao "Integration Services ...", com o mesmo nome de servidor.
Navegue para 'Pacotes armazenados / MSDB / Planos de manutenção'.
Existem todos os seus planos de manutenção. Clique com o botão direito do mouse neles para exportá-los.
fonte