Pagina inicial » como » Script em lote para simplificar a manutenção do banco de dados do SQL Server

    Script em lote para simplificar a manutenção do banco de dados do SQL Server

    Além de criar backups, há uma variedade de tarefas e funções disponibilizadas pelo SQL Server, que podem melhorar o desempenho e a confiabilidade de seus bancos de dados. Anteriormente, mostramos como fazer backup dos bancos de dados do SQL Server com um script de linha de comando simples, da mesma forma que fornecemos um script que permitirá executar facilmente tarefas comuns de manutenção..

    Compactando / encolhendo um banco de dados [/ Compact]

    Há vários fatores que contribuem para o espaço em disco físico usado por um banco de dados do SQL Server. Apenas para citar alguns:

    • Com o tempo, à medida que os registros são adicionados, excluídos e atualizados, o SQL cresce e encolhe constantemente as tabelas, além de gerar estruturas de dados temporárias para realizar manipulações de consultas. Para acomodar as necessidades de armazenamento em disco, o SQL Server aumentará o tamanho do banco de dados (geralmente em 10%), conforme necessário, para que o tamanho do arquivo de banco de dados não esteja mudando constantemente. Embora isso seja ideal para o desempenho, pode causar uma desconexão do espaço de armazenamento usado, porque se, por exemplo, você adicionar um número muito grande de registros que faz com que o banco de dados cresça e exclua esses registros, o SQL Server não recuperará automaticamente esse registro. espaço em disco.
    • Se você estiver usando o Modo de Recuperação Completa em seus bancos de dados, o arquivo de log transacional (LDF) poderá crescer bastante, especialmente em bancos de dados com um alto volume de atualizações..

    Compactar (ou encolher) o banco de dados irá recuperar o espaço em disco não utilizado. Para bancos de dados pequenos (200 MB ou menos) isso geralmente não será muito, mas para grandes bancos de dados (1 GB ou mais) o espaço recuperado pode ser significativo.

    Reindexando um banco de dados [/ Reindex]

    Assim como constantemente criar, editar e excluir arquivos pode levar à fragmentação do disco, inserir, atualizar e excluir registros em um banco de dados pode levar à fragmentação da tabela. Os resultados práticos são os mesmos em que as operações de leitura e gravação sofrem um impacto no desempenho. Embora não seja uma analogia perfeita, reindexar as tabelas em um banco de dados essencialmente as desfragmenta. Em alguns casos, isso pode aumentar significativamente a velocidade de recuperação de dados.

    Devido à maneira como o SQL Server funciona, as tabelas devem ser reindexadas individualmente. Para bancos de dados com um grande número de tabelas, isso pode ser uma tarefa difícil, mas o script acessa todas as tabelas do banco de dados e reconstrói todos os índices..

    Verificando integridade [/ verificar]

    Para que um banco de dados permaneça funcional e produza resultados precisos, existem vários itens de integridade que devem estar em vigor. Felizmente, problemas de integridade física e / ou lógica não são muito comuns, mas é uma boa prática executar ocasionalmente o processo de verificação de integridade em seus bancos de dados e revisar os resultados..

    Quando o processo de verificação é executado através do nosso script, apenas os erros são reportados, por isso nenhuma notícia é uma boa notícia.

    Usando o Script

    O script em lote do SQLMaint é compatível com o SQL 2005 e superior e deve ser executado em uma máquina que tenha a ferramenta SQLCMD instalada (instalada como parte da instalação do SQL Server). Recomenda-se soltar esse script em um local definido na variável PATH do Windows (ou seja, C: Windows) para que ele possa ser chamado facilmente como qualquer outro aplicativo na linha de comando..

    Para visualizar as informações de ajuda, basta digitar:

    SQLMaint /?

    Exemplos

    Para executar um compacto e, em seguida, verificar no banco de dados “MyDB” usando uma conexão confiável:

    SQLMaint MyDB / Compact / Verificar

    Para executar uma reindexação e compactar em “MyDB” na instância nomeada “Special” usando o usuário “sa” com a senha “123456”:

    SQLMaint MyDB /S:.Special / U: sa / P: 123456 / Reindex / Compact

    Usando de dentro de um script em lote

    Embora o script em lote do SQLMaint possa ser usado como um aplicativo da linha de comando, quando você o estiver usando dentro de outro script em lote, ele deve ser precedido pela palavra-chave CALL.

    Por exemplo, esse script executa todas as tarefas de manutenção em cada banco de dados que não seja do sistema em uma instalação padrão do SQL Server usando autenticação confiável:

    @ ECHO OFF
    SETLOCAL EnableExtensions
    SET DBList = ”% TEMP% DBList.txt”
    SqlCmd -E -h-1 -w 300 -Q “SET NoCount ON; SELECT Name FROM master.dbo.sysDatabases WHERE Nome NÃO IN ('master', 'model', 'msdb', 'tempdb') ”>% DBList%
    FOR / F “usebackq tokens = 1” %% i IN (% DBList%) DO (
    CHAMAR SQLMaint “%% i” / Compact / Reindex / Verificar
    ECO +++++++++++
    )
    IF EXIST% DBList% DEL / F / Q% DBList%
    ENDLOCAL

    Faça o download do script em lote SQLMaint em SysadminGeek.com