Compartilhar via


Utilitário sqlmaint

O utilitáriosqlmaint executa um conjunto especificado de operações de manutenção em um ou mais bancos de dados. Use o sqlmaint para executar verificações DBCC, fazer backup de um banco de dados e de seu log de transações, atualizar estatísticas e reconstruir índices. Todas as atividades de manutenção de banco de dados geram um relatório que pode ser enviado a um arquivo de texto, arquivo HTML ou conta de email. O sqlmaint executa planos de manutenção de bancos de dados criados com versões anteriores do SQL Server. Para executar planos de manutenção do SQL Server do prompt de comando, use o utilitário dtexec utility.

Observação importanteImportante

Esse recurso será removido na próxima versão do Microsoft SQL Server. Evite usar esse recurso em desenvolvimentos novos e planeje modificar os aplicativos que atualmente o utilizam. Em vez disso, use o recurso de plano de manutenção do SQL Server. Para obter mais informações sobre planos de manutenção, consulte Planos de manutenção.

Sintaxe

sqlmaint 
[-?] |
[
     [-S server_name[\instance_name]]
     [-U login_ID [-P password]]
     {
          [-D database_name | -PlanName name | -PlanID guid ]
          [-Rpt text_file]
          [-To operator_name]
          [-HtmlRpt html_file [-DelHtmlRpt <time_period>] ]
          [-RmUnusedSpace threshold_percentfree_percent]
          [-CkDB | -CkDBNoIdx]
          [-CkAl | -CkAlNoIdx]
          [-CkCat]
          [-UpdOptiStats sample_percent]
          [-RebldIdx free_space]
          [-SupportComputedColumn]
          [-WriteHistory]
          [
               {-BkUpDB [backup_path] | -BkUpLog [backup_path] }
               {-BkUpMedia
                    {DISK [
                           [-DelBkUps <time_period>] 
                           [-CrBkSubDir ] 
                           [-UseDefDir ] 
                          ]
                     | TAPE 
                    }
               }
               [-BkUpOnlyIfClean]
               [-VrfyBackup]
          ]
     }
]
<time_period> ::=
number[minutes | hours | days | weeks | months]

Argumentos

Os parâmetros e seus valores devem ser separados por um espaço. Por exemplo, deve haver um espaço entre -S e server_name.

  • -?
    Especifica que o diagrama de sintaxe para o sqlmaint seja retornado. Este parâmetro deve ser usado sozinho.

  • -Sserver_name[ **\instance_name]
    Especifica a instância de destino do MicrosoftSQL Server. Especifique o server_name para se conectar à instância padrão do Mecanismo de Banco de Dados do SQL Server nesse servidor. Especifique o server_name
    \**instance_name para se conectar a uma instância nomeada do Mecanismo de Banco de Dados nesse servidor. Se nenhum servidor for especificado, o sqlmaint irá se conectar à instância padrão do Mecanismo de Banco de Dados no computador local.

  • -Ulogin_ID
    Especifica a ID de logon a ser usada para se conectar ao servidor. Se não for fornecida, o sqlmaint tenta usar a autenticação Microsoft Windows. Se o login_ID contiver caracteres especiais, ele deve estar entre aspas duplas ("); caso contrário, as aspas duplas são opcionais.

    Observação sobre segurançaObservação sobre segurança

    Quando possível, use a autenticação do Windows.

  • -Ppassword
    Especifica a senha para a ID de logon. Só é válido se o parâmetro -U também for fornecido. Se a password contiver caracteres especiais, ela deve estar entre aspas duplas; caso contrário, as aspas duplas são opcionais.

    Observação sobre segurançaObservação sobre segurança

    A senha não é mascarada. Quando possível, use a autenticação do Windows.

  • -Ddatabase_name
    Especifica o nome do banco de dados no qual a operação de manutenção deve ser executada. Se o database_name contiver caracteres especiais, ele deve estar entre aspas duplas; caso contrário, as aspas duplas são opcionais.

  • -PlanNamename
    Especifica o nome de um plano de manutenção de banco de dados definido com o uso do Assistente para Planos de Manutenção de Banco de Dados. A única informação que o sqlmaint usa do plano é a lista de bancos de dados no plano. Todas as atividades de manutenção especificadas nos outros parâmetros do sqlmaint são aplicadas a essa lista de bancos de dados.

  • -PlanIDguid
    Especifica o identificador global exclusivo (GUID) de um plano de manutenção de banco de dados definido com o uso do Assistente para Planos de Manutenção de Banco de Dados. A única informação que o sqlmaint usa do plano é a lista de bancos de dados no plano. Todas as atividades de manutenção especificadas nos outros parâmetros do sqlmaint são aplicadas a essa lista de bancos de dados. Isso deve corresponder a um valor do plan_id em msdb.dbo.sysdbmaintplans.

  • -Rpttext_file
    Especifica o caminho completo e o nome do arquivo no qual será gerado o relatório. O relatório também é gerado na tela. O relatório mantém informações de versão adicionando uma data ao nome do arquivo. A data é gerada do seguinte modo: no final do nome do arquivo, mas antes do ponto final, sob a forma _yyyyMMddhhmm. yyyy = ano, MM = mês, dd = dia, hh = hora, mm = minuto.

    Se você executar o utilitário às 10:23 do dia 1 de dezembro de 1996, e este for o valor do text_file:

    c:\Program Files\Microsoft SQL Server\Mssql\Backup\AdventureWorks_maint.rpt
    

    O nome de arquivo gerado é:

    c:\Program Files\Microsoft SQL Server\Mssql\Backup\AdventureWorks_maint_199612011023.rpt
    

    O nome do arquivo completo segundo a Convenção Universal de Nomenclatura (UNC) é exigido para o text_file quando o sqlmaint acessa um servidor remoto.

  • -To operator_name
    Especifica o operador para quem o relatório gerado será enviado por meio do SQL Mail.

  • -HtmlRpthtml_file
    Especifica o caminho completo e nome do arquivo no qual um relatório HTML será gerado. O sqlmaint gera o nome de arquivo anexando uma cadeia de caracteres no formato _yyyyMMddhhmm ao nome do arquivo, como faz para o parâmetro -Rpt.

    O nome de arquivo UNC completo é exigido para o html_file quando o sqlmaint acessa um servidor remoto.

  • - DelHtmlRpt <time_period> <time_period>
    Especifica que qualquer relatório HTML no diretório de relatórios deve ser excluído se o intervalo de tempo depois da criação do arquivo de relatório exceder o <time_period>. -DelHtmlRpt procura arquivos cujos nomes correspondam ao padrão gerado pelo parâmetro html_file. Se o html_file for c:\Arquivos de Programas\Microsoft SQL Server\Mssql\Backup\AdventureWorks_maint.htm, então -DelHtmlRpt faz com que o sqlmaint exclua todos os arquivos cujos nomes correspondam ao padrão C:\Arquivos de Programas\Microsoft SQL Server\Mssql\Backup\AdventureWorks_maint*.htm e sejam mais antigos do que especificado no <time_period>.

  • -RmUnusedSpacethreshold_percent free_percent
    Especifica que o espaço não usado seja removido do banco de dados especificado no -D. Essa opção só é útil para bancos de dados definidos para crescer automaticamente. O Threshold_percent especifica em megabytes o tamanho que o banco de dados deve atingir antes de o sqlmaint tentar remover o espaço de dados não usados. Se o banco de dados for menor do que o threshold_percent, nenhuma ação será tomada. O Free_percent especifica quanto espaço não usado deve permanecer no banco de dados. Esse valor é especificado como uma porcentagem do tamanho final do banco de dados. Por exemplo, se um banco de dados com 200 MB contiver 100 MB de dados, especificando 10 para o free_percent o resultado final do banco de dados será 110 MB. Observe que um banco de dados não será expandido se for menor do que o free_percent somado à quantidade de dados no banco de dados. Por exemplo, se um banco de dados de 108 MB tiver 100 MB de dados, especificando 10 para free_percent isso não expande o banco de dados para 110 MB; ele permanece com 108 MB.

  • -CkDB | -CkDBNoIdx
    Especifica que uma instrução DBCC CHECKDB ou DBCC CHECKDB com a opção de NOINDEX seja executada no banco de dados especificado no -D. Para obter mais informações, consulte DBCC CHECKDB.

    Um aviso será gravado no text_file se o banco de dados estiver em uso quando o sqlmaint for executado.

  • -CkAl | -CkAlNoIdx
    Especifica que uma instrução DBCC CHECKALLOC com a opção de NOINDEX seja executada no banco de dados especificado no -D. Para obter mais informações, consulte DBCC CHECKALLOC (Transact-SQL).

  • -CkCat
    Especifica que uma instrução DBCC CHECKCATALOG (Transact-SQL) seja executada no banco de dados especificado no -D. Para obter mais informações, consulte DBCC CHECKCATALOG (Transact-SQL).

  • -UpdOptiStatssample_percent
    Especifica que a instrução seguinte seja executada em cada tabela no banco de dados:

    UPDATE STATISTICS table WITH SAMPLE sample_percent PERCENT
    

    Se as tabelas contiverem colunas computadas, você também deve especificar o argumento - SupportedComputedColumn quando usar - UpdOptiStats.

    Para obter mais informações, consulte UPDATE STATISTICS (Transact-SQL).

  • -RebldIdxfree_space
    Especifica que os índices nas tabelas do banco de dados de destino devem ser reconstruídos usando o valor percentual free_space como o inverso do fator de preenchimento. Por exemplo, se a porcentagem de free_space for 30, então o fator de preenchimento usado será 70. Se for especificado um valor percentual de free_space 100, os índices serão reconstruídos com o fator de preenchimento original.

    Se os índices estiverem em colunas computadas, você também deve especificar o argumento -SupportComputedColumn quando usar -RebldIdx.

  • -SupportComputedColumn
    Deve ser especificado para executar comandos de manutenção DBCC com sqlmaint em colunas computadas.

  • -WriteHistory
    Especifica se uma entrada é feita no msdb.dbo.sysdbmaintplan_history para cada ação de manutenção executada pelo sqlmaint. Se -PlanName ou -PlanID estiver especificado, as entradas no sysdbmaintplan_history usarão a ID do plano especificado. Se -D estiver especificado, as entradas no sysdbmaintplan_history serão feitas com zeros para a ID do plano.

  • -BkUpDB [ backup_path] | -BkUpLog [ backup_path ]
    Especifica uma ação de backup. -BkUpDb faz o backup de todo o banco de dados. -BkUpLog faz o backup apenas do log de transações.

    O backup_path especifica o diretório para o backup. O backup_path não é necessário se -UseDefDir também estiver especificado, e é substituído por -UseDefDir se ambos estiverem especificados. O backup pode ser colocado em um diretório ou um endereço de dispositivo de fita (por exemplo, \\. \TAPE0). O nome do arquivo para um backup de banco de dados é gerado automaticamente como segue:

    dbname_db_yyyyMMddhhmm.BAK
    

    onde

    • dbname é o nome do banco de dados do qual é feito o backup.

    • yyyyMMddhhmm é a hora da operação de backup com yyyy = ano, MM = mês, dd = dia, hh = hora e mm = minuto.

    O nome do arquivo para um backup de transações é gerado automaticamente com um formato semelhante:

    dbname_log_yyyymmddhhmm.BAK
    

    Se você usar o parâmetro -BkUpDB, também deve especificar as mídias usando o parâmetro -BkUpMedia.

  • -BkUpMedia
    Especifica o tipo de mídia do backup: DISK ou TAPE.

  • DISK
    Especifica que a mídia de backup é disco.

  • -DelBkUps< time_period >
    Para backups em disco, especifica que qualquer arquivo de backup no diretório de backups deve ser excluído se o intervalo de tempo depois da criação do backup exceder o <time_period>.

  • -CrBkSubDir
    Para backups em disco, especifica que um subdiretório seja criado no diretório [backup_path] ou no diretório padrão de backup se -UseDefDir também estiver especificado. O nome do subdiretório é gerado do nome de banco de dados especificado no -D. -CrBkSubDir oferece um modo fácil de colocar todos os backups de bancos de dados diferentes em subdiretórios separados sem ter de alterar o parâmetro backup_path.

  • -UseDefDir
    Para backups de disco, especifica que o arquivo de backup seja criado no diretório padrão de backup. UseDefDir substituirá backup_path se ambos forem especificados. Com uma instalação padrão do MicrosoftSQL Server, o diretório padrão de backup é C:\Arquivos de Programas\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Backup.

  • TAPE
    Especifica que a mídia de backup é fita.

  • -BkUpOnlyIfClean
    Especifica que o backup ocorre apenas se nenhuma verificação -Ck especificada localizou problemas com os dados. As ações de manutenção são executadas na mesma seqüência em que aparecem no prompt de comando. Especifique os parâmetros -CkDB, -CkDBNoIdx, -CkAl, -CkAlNoIdx, -CkTxtAl ou -CkCat antes dos parâmetros -BkUpDB/-BkUpLog se você também for especificar -BkUpOnlyIfClean ou o backup ocorrerá haja ou não problemas nos relatórios de verificações.

  • -VrfyBackup
    Especifica que o RESTORE VERIFYONLY será executado no backup quando este for concluído.

  • number[minutos| horas| dia| semanas| meses]
    Especifica o intervalo de tempo usado para determinar se um relatório ou arquivo de backup é antigo o bastante para ser excluído. O number é um inteiro seguido (sem espaço) por uma unidade de tempo. Exemplos válidos:

    • 12semanas

    • 3meses

    • 15dias

    Se apenas o number for especificado, a parte de data padrão será semanas.

Comentários

O utilitário sqlmaint executa operações de manutenção em um ou mais bancos de dados. Se - D estiver especificado, as operações especificadas nas demais opções serão executadas apenas no banco de dados especificado. Se -PlanName ou -PlanID estiverem especificados, as únicas informações que o sqlmaint recupera do plano de manutenção especificado é a lista de bancos de dados no plano. Todas as operações especificadas nos demais parâmetros do sqlmaint são aplicadas a cada banco de dados na lista obtida do plano. O utilitário sqlmaint não aplica nenhuma atividade de manutenção definida no próprio plano.

O utilitário sqlmaint retornará 0 se for executado com êxito ou 1 se apresentar falha. A falha é informada:

  • Se alguma ação de manutenção apresentar falha.

  • Se as verificações -CkDB, -CkDBNoIdx, -CkAl, -CkAlNoIdx, -CkTxtAl ou -CkCat encontrar problemas nos dados.

  • Se uma falha geral for encontrada.

Permissões

O utilitário sqlmaint pode ser executado por qualquer usuário do Windows com permissão Ler e Executar no sqlmaint.exe que, por padrão, é armazenada na pasta x:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER1\MSSQL\Binn. Adicionalmente, o logon SQL Server especificado com permissões -login_ID deve ter as permissões exigidas pelo SQL Server para executar a ação especificada. Se a conexão do SQL Server usar a autenticação do Windows, o logon do SQL Server mapeado para autenticar o usuário do Windows deve ter as permissões do SQL Server exigidas para realizar a ação especificada.

Por exemplo, para usar o -BkUpDB é preciso ter permissão para executar a instrução de BACKUP. E para usar o argumento -UpdOptiStats é preciso ter permissão para executar a instrução de UPDATE STATISTICS. Para obter mais informações, consulte as seções "Permissões" dos tópicos correspondentes nos Manuais Online.

Exemplos

A. Realização de verificações DBCC no banco de dados AdventureWorks.

sqlmaint -S MyServer -D AdventureWorks -CkDB -CkAl -CkCat -Rpt C:\MyReports\AdvWks_chk.rpt

B. Atualização de estatísticas usando uma amostra de 15% em todos os bancos de dados em um plano. Também, reduz qualquer banco de dados que tenha alcançado 110 MB para ter só 10% de espaço livre.

sqlmaint -S MyServer -PlanName MyUserDBPlan -UpdOptiStats 15 -RmUnusedSpace 110 10

C. Realização de backup de todos os bancos de dados em um plano em seus subdiretórios individuais no diretório padrão x:\Arquivos de Programas\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Backup. Exclui, também, qualquer backup com mais de 2 semanas.

sqlmaint -S MyServer -PlanName MyUserDBPlan -BkUpDB -BkUpMedia DISK -UseDefDir -CrBkSubDir -DelBkUps 2weeks

D. Realização de backup do banco de dados AdventureWorks no diretório padrão x:\Arquivos de Programas\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Backup.\

sqlmaint -S MyServer -BkUpDB -BkUpMedia DISK -UseDefDir