Compartilhar via


Utilitário sqlmaint

Aplica-se:SQL Server

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

Importante

Esse recurso será removido em uma versão futura do 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

Separe os parâmetros e seus valores com um espaço. Por exemplo, inclua um espaço entre -S e server_name.

-?

Retorna o diagrama de sintaxe para sqlmaint. Use esse parâmetro sozinho.

-S server_name[\instance_name]

Especifica a instância de destino do SQL Server. Especifique <server_name> para se conectar à instância padrão do Mecanismo de Banco de Dados do SQL Server nesse servidor. Especifique <server_name>\<instance_name> para se conectar a uma instância nomeada do Mecanismo de Banco de Dados nesse servidor. Se você não especificar um servidor, o sqlmaint se conectará à instância padrão do Mecanismo de Banco de Dados no computador local.

-U login_ID

Especifica a conta a ser usada ao se conectar ao servidor. Se você não fornecer esse parâmetro, o sqlmaint tentará usar a autenticação do Windows. Se login_ID contiver caracteres especiais, coloque-o entre aspas duplas ("); caso contrário, as aspas duplas serão opcionais.

Importante

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

Senha -P

Especifica a senha do login_ID. Esse parâmetro só será válido se você também fornecer o -U parâmetro. Se a senha contiver caracteres especiais, coloque-a entre aspas duplas; caso contrário, as aspas duplas são opcionais.

Importante

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

- D database_name

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

-NomePlano name

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. As únicas informações 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 se aplicam a esta lista de bancos de dados.

-PlanID guid

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. As únicas informações que o sqlmaint usa é a lista de bancos de dados no plano. Todas as atividades de manutenção especificadas nos outros parâmetros do sqlmaint se aplicam a esta lista de bancos de dados. Esse valor deve corresponder a um plan_id valor em msdb.dbo.sysdbmaintplans.

-Rpt text_file

Especifica o caminho completo e o nome do arquivo para o relatório gerado. 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 da seguinte maneira, no final do nome do arquivo, mas antes do período, no formulário _<yyyyMMddhhmm>. <yyyy> = ano, <MM> = mês, <dd> = dia, <hh> = hora, <mm> = minuto.

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

C:\Program Files\Microsoft SQL Server\MSSQL\Backup\AdventureWorks2022_maint.rpt

O nome de arquivo gerado é:

C:\Program Files\Microsoft SQL Server\MSSQL\Backup\AdventureWorks2022_maint_199612011023.rpt

O nome do arquivo UNC completo é necessário para text_file , quando sqlmaint acessa um servidor remoto.

-Para operator_name

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

-HtmlRpt html_file

Especifica o caminho completo e o nome do arquivo no qual um relatório HTML é gerado. sqlmaint gera o nome do arquivo acrescentando uma cadeia de caracteres do formato _<yyyyMMddhhmm> ao nome do arquivo, assim como ele faz para o -Rpt parâmetro.

O nome do arquivo UNC completo é necessário para html_file , quando sqlmaint acessa um servidor remoto.

-DelHtmlRpt <time_period>

Exclui qualquer relatório HTML no diretório do relatório se o intervalo de tempo após a criação do arquivo de relatório exceder time_period. -DelHtmlRpt procura arquivos cujo nome se ajusta ao padrão gerado a partir do parâmetro html_file . Se html_file for C:\Program Files\Microsoft SQL Server\MSSQL\Backup\AdventureWorks2022_maint.htm, então -DelHtmlRpt faz com que sqlmaint exclua qualquer arquivo cujos nomes correspondam ao padrão C:\Program Files\Microsoft SQL Server\MSSQL\Backup\AdventureWorks2022_maint*.htm e que sejam mais antigos do que o período de tempo especificado.

-RmUnusedSpace threshold_percent free_percent

Especifica que o espaço não utilizado é removido do banco de dados especificado em -D. Essa opção só é útil para bancos de dados definidos para crescer automaticamente. Threshold_percent especifica o tamanho em megabytes que o banco de dados deve atingir, antes que sqlmaint tente remover o espaço de dados não utilizado. Se o banco de dados for menor que threshold_percent, nenhuma ação será tomada. Free_percent especifica quanto espaço não utilizado deve permanecer no banco de dados, especificado como um percentual do tamanho final do banco de dados.

Por exemplo, se um banco de dados com 200 MB contiver 100 MB de dados, especificar 10 para free_percent resultará em um tamanho final de banco de dados de 110 MB. Um banco de dados não será expandido se for menor que free_percent mais a quantidade de dados no banco de dados. Por exemplo, se um banco de dados de 108 MB tiver 100 MB de dados, especificar 10 para free_percent não expandirá o banco de dados para 110 MB; ele permanece em 108 MB.

-CkDB | -CkDBNoIdx

Especifica que uma instrução DBCC CHECKDB ou uma DBCC CHECKDB instrução com a opção NOINDEX seja executada no banco de dados especificado em -D.

sqlmaint grava um aviso para text_file se o banco de dados estiver em uso quando ele for executado.

-CkAl | -CkAlNoIdx

Especifica que uma instrução DBCC CHECKALLOC com a opção NOINDEX é executada no banco de dados especificado em -D.

-CkCat

Especifica que uma instrução DBCC CHECKCATALOG é executada no banco de dados especificado em -D.

-UpdOptiStats sample_percent

Especifica que a instrução a seguir é 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 deverá especificar o -SupportedComputedColumn argumento ao usar -UpdOptiStats.

Para obter mais informações, confira UPDATE STATISTICS.

-RebldIdx free_space

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

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

-SuporteColunaCalculada

Deve ser especificada a execução de DBCC comandos de manutenção usando sqlmaint em colunas calculadas.

-WriteHistory

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

-BkUpDB [ backup_path ] | -BkUpLog [ backup_path ]

Especifica uma ação de backup. -BkUpDb faz backup de todo o banco de dados. -BkUpLog faz backup apenas do log de transações.

backup_path especifica o diretório do backup. backup_path não será necessário se -UseDefDir também for especificado e -UseDefDirsubstituirá backup_path se ambos forem especificados. O backup pode ser colocado em um diretório ou em 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

Where:

  • <dbname> é o nome do banco de dados que está sendo feito 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 -BkUpDB parâmetro, também deverá especificar a mídia usando o -BkUpMedia parâmetro.

-BkUpMedia

Especifica o tipo de mídia do backup, seja DISK ou TAPE.

DISK

Especifica que a mídia de backup é disco.

-DelBkUps <time_period>

Para backups de disco, especifica que qualquer arquivo de backup no diretório de backup será excluído se o intervalo de tempo após a criação do backup exceder o time_period.

-CrBkSubDir

Para backups de disco, especifica que um subdiretório seja criado no diretório backup_path ou no diretório de backup padrão, se -UseDefDir também for especificado. O nome do subdiretório é gerado a partir do nome do banco de dados especificado em -D. -CrBkSubDir oferece uma maneira fácil de colocar todos os backups de bancos de dados diferentes em subdiretórios separados sem precisar 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 substitui backup_path se ambos forem especificados. Com uma configuração padrão do SQL Server, o diretório de backup padrão é C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup.

fita magnética

Especifica que a mídia de backup é fita.

-BkUpOnlyIfClean

Especifica que o backup ocorre somente se as verificações especificadas -Ck não encontrarem problemas com os dados. As ações de manutenção são executadas na mesma sequência em que aparecem no prompt de comando. Especifique os parâmetros -CkDB, -CkDBNoIdx, -CkAl, -CkAlNoIdx, -CkTxtAlou -CkCat antes dos -BkUpDB parâmetros ou -BkUpLog se você também vai especificar -BkUpOnlyIfClean. Se você não especificar esses parâmetros, o backup ocorrerá independentemente de a verificação relatar problemas ou não.

-VrfyBackup

Especifica que RESTORE VERIFYONLY é executado no backup quando ele é 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. number é um inteiro seguido (sem espaço) por uma unidade de tempo. Exemplos válidos:

  • 12weeks
  • 3months
  • 15days

Se você especificar apenas o número, a parte de data padrão será weeks.

Comentários

O utilitário sqlmaint executa operações de manutenção em um ou mais bancos de dados. Se você especificar -D, o utilitário executará as operações especificadas nas opções restantes somente no banco de dados especificado. Se você especificar -PlanName ou -PlanID, 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 das atividades de manutenção definidas no próprio plano.

O utilitário sqlmaint retorna 0 se for executado com êxito ou 1 se apresentar falha. A falha será relatada se:

  • Qualquer uma das ações de manutenção falha.

  • As verificações -CkDB, -CkDBNoIdx, -CkAl, -CkAlNoIdx, -CkTxtAl ou -CkCat encontram problemas com os dados.

  • Uma falha geral é encontrada.

Permissões

Qualquer usuário do Windows com permissão de Leitura e Execuçãosqlmaint.exe pode executar o utilitário sqlmaint . Por padrão, sqlmaint.exe é armazenado na <X>:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER1\MSSQL\Binn pasta. Além disso, o logon do SQL Server que você especificar com -login_ID deve ter as permissões necessárias do SQL Server para executar a ação especificada. Se você usar a autenticação do Windows para se conectar ao SQL Server, o logon do SQL Server mapeado para o usuário autenticado do Windows deverá ter as permissões do SQL Server necessárias para executar a ação especificada.

Por exemplo, usar -BkUpDB requer permissão para executar a instrução BACKUP. E usar o -UpdOptiStats argumento requer permissão para executar a UPDATE STATISTICS instrução. Para obter mais informações, consulte Permissões (Mecanismo de Banco de Dados).

Exemplos

a. Executar verificações de DBCC em um banco de dados

Este exemplo executa DBCC verificações em um banco de dados.

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

B. Atualizar estatísticas

Este exemplo atualiza estatísticas usando uma amostra de 15% em todos os bancos de dados em um plano. Qualquer banco de dados que atinge 110 MB é reduzido para ter apenas 10% espaço livre.

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

C. Fazer backup de todos os bancos de dados

Este exemplo faz backup de todos os bancos de dados em um plano para seus subdiretórios individuais usando o diretório padrão <X>:\Program Files\Microsoft SQL Server\MSSQLl13.MSSQLSERVER\MSSQL\Backup . Ele também exclui backups com mais de duas semanas.

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

D. Fazer o backup de um banco de dados

Este exemplo faz backup de um único banco de dados para o diretório padrão <X>:\Program Files\Microsoft SQL Server\MSSQLl13.MSSQLSERVER\MSSQL\Backup .

sqlmaint -S MyServer -BkUpDB -BkUpMedia DISK -UseDefDir