Criação um trabalho para manutenção de instância programada
Cenários
Depois que uma instância de BD é executada por um período de tempo, o desempenho do sistema se deteriora porque os fragmentos de índice aumentam e as estatísticas não são atualizadas em tempo hábil. É aconselhável criar um trabalho de agente SQL para recriar índices periodicamente, atualizar estatísticas e reduzir o banco de dados.
Criar um trabalho de recriação de índice
- Inicie o cliente do SQL Server Management Studio e faça logon nele como usuário rdsuser.
    
    

 - Clique com o botão direito do mouse em SQL Server Agent e escolha New > Job para criar um trabalho de SQL Agent.
    
    

 - Insira o nome e a descrição e clique em OK.
    
    

 - Selecione Steps e clique em New para adicionar uma etapa de execução.
    
    Figura 1 Adicionar uma etapa de execução
     - Insira o nome, o tipo e o comando da etapa e clique em OK. Defina Command para as instruções SQL que precisam ser executadas periodicamente. Quando o número de fragmentos de índice atinge um valor especificado, por exemplo, 30%, o índice pode ser recriado.
    
    Figura 2 Configure parâmetros
    Execute a seguinte instrução SQL para recriar o índice porque o número de fragmentos de índice de todas as tabelas no dbname especificado excede 30%:
use [dbname] SET NOCOUNT ON DECLARE @Objectid INT, @Indexid INT,@schemaname VARCHAR(100),@tablename VARCHAR(300),@ixname VARCHAR(500),@avg_fip float,@command VARCHAR(4000) DECLARE IX_Cursor CURSOR FOR SELECT A.object_id,A.index_id,QUOTENAME(SS.name) AS schemaname,QUOTENAME(OBJECT_NAME(B.object_id,B.database_id))as tablename ,QUOTENAME(A.name) AS ixname,B.avg_fragmentation_in_percent AS avg_fip FROM sys.indexes A inner join sys.dm_db_index_physical_stats(DB_ID(),NULL,NULL,NULL,'LIMITED') AS B ON A.object_id=B.object_id and A.index_id=B.index_id INNER JOIN sys.objects OS ON A.object_id=OS.object_id INNER JOIN sys.schemas SS ON OS.schema_id=SS.schema_id WHERE B.avg_fragmentation_in_percent>10 and B.page_count>20 AND A.index_id>0 AND A.is_disabled<>1 --AND OS.name='book' ORDER BY tablename,ixname OPEN IX_Cursor FETCH NEXT FROM IX_Cursor INTO @Objectid,@Indexid,@schemaname,@tablename,@ixname,@avg_fip WHILE @@FETCH_STATUS=0 BEGIN IF @avg_fip>=30.0 BEGIN SET @command=N'ALTER INDEX '+@ixname+N' ON '+@schemaname+N'.'+ @tablename+N' REBUILD '; END --PRINT @command EXEC(@command) FETCH NEXT FROM IX_Cursor INTO @Objectid,@Indexid,@schemaname,@tablename,@ixname,@avg_fip END CLOSE IX_Cursor DEALLOCATE IX_Cursor
 
     Nas instruções SQL anteriores, você só precisa alterar o valor de Use [dbname] na primeira linha para o nome do banco de dados especificado.
Se você precisar executar as instruções SQL para todos os bancos de dados, modifique as instruções SQL para adicionar a execução cíclica para todos os bancos de dados.
 - Selecione Schedules e clique em New para adicionar um plano de execução programado.
    
    Figura 3 Adicionar um plano de execução agendado
     - Adicione um cronograma executado uma vez por mês, modifique a frequência e a duração diárias e clique em OK.
    
    Figura 4 Configurar um plano de execução agendado
     - Exiba que o trabalho foi criado.
    
    Figura 5 job
     - Clique com o botão direito do mouse no trabalho e escolha Start Job at Step para executar manualmente o trabalho.
    
    Figura 6 Executar um trabalho.
     - Verifique se o trabalho pode ser executado corretamente. Se o trabalho for executado normalmente, o trabalho de manutenção para recriar periodicamente os índices do banco de dados db1 foi criado.
    
    

 
Atualizar estatísticas
- Realize 1 para 4.
 - Insira o nome, o tipo e o comando da etapa e clique em OK. Defina Command como o procedimento armazenado para atualizar estatísticas. Para obter detalhes, consulte Atualização das estatísticas do banco de dados.
    
    Figura 7 Atualizar estatísticas
     - Selecione Schedules e clique em New para adicionar um plano de execução programado.
    
    Figura 8 Adicionar um plano de execução agendado
     - Adicione um cronograma executado uma vez por mês, modifique a frequência e a duração diárias e clique em OK.
    
    Figura 9 Configurar um plano de execução agendado
     - Exiba que o trabalho foi criado.
    
    Figura 10 Atualizar trabalho de estatística
     - Clique com o botão direito do mouse no trabalho e escolha Start Job at Step para executar manualmente o trabalho.
 
Reduzir o banco de dados periodicamente
- Realize 1 para 4.
 - Insira o nome, o tipo e o comando da etapa e clique em OK. Defina Command como os comandos SQL para reduzir o banco de dados.
    
    
EXEC [master].[dbo].[rds_shrink_database_log] @dbname='myDbName';
Defina @dbname como o nome do banco de dados.
 - Selecione Schedules e clique em New para adicionar um plano de execução programado.
    
    Figura 11 Adicionar um plano de execução agendado
     - Adicione um cronograma executado uma vez por mês, modifique a frequência e a duração diárias e clique em OK.
    
    Figura 12 Configurar um plano de execução agendado
     - Clique com o botão direito do mouse no trabalho e escolha Start Job at Step para executar manualmente o trabalho.