Compartilhar via


utilitário sqlmaint

Aplica-se a: SQL Server

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 do respectivo 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 pode ser enviado a um arquivo de texto designado, 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. 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. Use o recurso de plano de manutenção do SQL Server. Para obter mais informações sobre planos de manutenção, veja 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.

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

-U login_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 do Microsoft Windows. Se login_ID contiver caracteres especiais, ele deverá estar entre aspas duplas ("); caso contrário, as aspas duplas serão opcionais.

Importante

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

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

Importante

A senha não é 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 o database_name contiver caracteres especiais, ele deverá estar entre aspas duplas; caso contrário, as aspas duplas são opcionais.

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

-Rpt text_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 da seguinte forma: ao final do nome do arquivo, mas antes do ponto final, no formato _aaaaMMddhhmm. aaaa = 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.

-To 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 nome do arquivo no qual um relatório HTML será gerado. sqlmaint gera o nome de arquivo, acrescentando uma cadeia de caracteres no formato _aaaaMMddhhmm ao nome do arquivo, da mesma forma que faz para o parâmetro -Rpt .

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

-DelHtmlRpt<time_period>
Especifica que qualquer relatório HTML no diretório de relatórios deverá ser excluído se o intervalo de tempo após a criação do arquivo de relatório exceder <time_period>. -DelHtmlRpt procura arquivos cujos nomes correspondem ao padrão gerado pelo parâmetro html_file. Se html_file for c:\Program Files\Microsoft SQL Server\Mssql\Backup\AdventureWorks2022_maint.htm, -DelHtmlRpt fará com que sqlmaint exclua todos os arquivos cujos nomes correspondam ao padrão C:\Program Files\Microsoft SQL Server\Mssql\Backup\AdventureWorks2022_maint*.htm e que sejam anteriores ao <time_period> especificado.

-RmUnusedSpace threshold_percent free_percent
Especifica que o espaço não usado seja 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. Observe que um banco de dados não será expandido se for menor do que 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, especificar 10 para free_percent não expandirá o banco de dados para 110 MB; ele permanecerá 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 em -D. Para obter mais informações, consulte DBCC CHECKDB.

Um aviso será gravado em text_file , se o banco de dados estiver em uso, quando 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 em -D. Para obter mais informações, confira DBCC CHECKALLOC (Transact-SQL).

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

-UpdOptiStats sample_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 incluírem colunas computadas, também será necessário especificar o argumento -SupportedComputedColumn quando usar -UpdOptiStats.

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

-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 for especificado um valor percentual de free_space de 100, os índices serão reconstruídos com o fator de preenchimento original.

Se os índices estiverem em colunas computadas, também será necessário 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 que deve haver uma entrada em msdb.dbo.sysdbmaintplan_history para cada ação de manutenção executada por sqlmaint. Se -PlanName ou -PlanID for especificado, as entradas no sysdbmaintplan_history usarão a ID do plano especificado. Se -D for especificado, as entradas em 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 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 será substituído por -UseDefDir se ambos estiverem 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  
  

onde

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

  • aaaaMMddhhmm é o tempo da operação de backup com aaaa = 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 usar o parâmetro -BkUpDB , também será necessário especificar a mídia 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 deverá ser excluído se o intervalo de tempo após a criação do backup exceder o <time_period>.

-CrBkSubDir
Para backups em disco, especifica que um subdiretório deverá ser criado no diretório [backup_path] ou no diretório de backup padrão se o -UseDefDir também for especificado. O nome do subdiretório é gerado com base no nome do banco de dados especificado em -D. -CrBkSubDir oferece um modo fácil de colocar todos os backups de bancos de dados diferentes em subdiretórios separados, sem a necessidade 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 Microsoft SQL Server, o diretório padrão de backup é C:\Arquivos de Programas\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup.

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

-BkUpOnlyIfClean
Especifica que o backup ocorrerá apenas se nenhuma verificação -Ck especificada encontrar problemas nos dados. As ações de manutenção são executadas na mesma sequência em que aparecem no prompt de comando. Especifique o parâmetro -CkDB, -CkDBNoIdx, -CkAl, -CkAlNoIdx, -CkTxtAlou -CkCat antes de -BkUpDB/-BkUpLog caso também for especificar -BkUpOnlyIfClean, ou o backup ocorrerá independentemente de a verificação relatar problemas ou não.

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

number[minutes| hours| day| weeks| months]
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:

  • 12semanas

  • 3meses

  • 15dias

Se apenas o number for especificado, 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 -D for especificado, as operações especificadas nas demais opções serão executadas apenas no banco de dados especificado. Se -PlanName ou -PlanID forem especificados, a única informação que sqlmaint recuperará do plano de manutenção especificado será 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 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 é informada:

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

  • Se as verificações -CkDB, -CkDBNoIdx, -CkAl, -CkAlNoIdx, -CkTxtAlou -CkCat encontrarem 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 a permissão Ler e Executar no sqlmaint.exeque, por padrão, é armazenado na pasta x:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER1\MSSQL\Binn . Adicionalmente, o logon do SQL Server especificado com -login_ID precisa 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, o uso de -BkUpDB exige permissão para executar a instrução BACKUP. Além disso, o uso do argumento -UpdOptiStats exige permissão para executar a instrução 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 em um banco de dados

sqlmaint -S MyServer -D AdventureWorks2022 -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 nos respectivos subdiretórios individuais no diretório padrão x:\Arquivos de Programas\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Diretório de 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 de um banco de dados no diretório padrão x:\Arquivos de Programas\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Diretório de backup.\

sqlmaint -S MyServer -BkUpDB -BkUpMedia DISK -UseDefDir  

Consulte Também

BACKUP (Transact-SQL)
UPDATE STATISTICS (Transact-SQL)