Partilhar via


Utilidade SQLmaint

Aplica-se a: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 fazer DBCC verificações, fazer cópias de segurança de uma base de dados e do seu registo de transações, atualizar estatísticas e reconstruir índices. Todas as atividades de manutenção da base de dados geram um relatório que pode enviar para um ficheiro de texto designado, ficheiro HTML ou conta de e-mail. o sqlmaint executa planos de manutenção de bases de dados criados em versões anteriores do SQL Server. Para executar planos de manutenção do SQL Server a partir do 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 novos trabalhos de desenvolvimento e planeje modificar aplicativos que atualmente usam esse recurso. Use antes a funcionalidade de plano de manutenção do SQL Server. Para 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

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

-?

Devolve o diagrama sintáctico do sqlmaint. Use este parâmetro isoladamente.

-S server_name[\instance_name]

Especifica a instância alvo do SQL Server. Especifique <server_name> para se ligar à instância padrão do SQL Server Database Engine nesse servidor. Especifique <server_name>\<instance_name>, para ligar a uma instância com nome do Motor de Base de Dados nesse servidor. Se não especificares um servidor, o sqlmaint liga-se à instância padrão do Database Engine no computador local.

-U login_ID

Especifica a conta a usar ao ligar-se ao servidor. Se não fornecer este parâmetro, o sqlmaint tenta usar autenticação do Windows. Se login_ID contiver caracteres especiais, inclua-o entre aspas duplas ("); caso contrário, as aspas duplas são opcionais.

Importante

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

-P senha

Especifica a palavra-passe do login_ID. Este parâmetro só é válido se também fornecer o -U parâmetro. Se a palavra-passe contiver caracteres especiais, inclua-a entre aspas duplas; caso contrário, as aspas duplas são opcionais.

Importante

A palavra-passe 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 executar a operação de manutenção. Se database_name contiver caracteres especiais, inclua-o entre aspas duplas; caso contrário, as aspas duplas são opcionais.

-PlanName Nome

Especifica o nome de um plano de manutenção de banco de dados definido usando o Assistente de Plano de Manutenção de Banco de Dados. A única informação que o sqlmaint utiliza do plano é a lista de bases de dados no plano. Todas as atividades de manutenção especificadas nos outros parâmetros sqlmaint são aplicadas a essa lista de bancos de dados.

-PlanID guid

Especifica o identificador global exclusivo (GUID) de um plano de manutenção de banco de dados definido usando o Assistente de Plano de Manutenção de Banco de Dados. A única informação que o sqlmaint utiliza é a lista de bases de dados no plano. Todas as atividades de manutenção especificadas nos outros parâmetros sqlmaint são aplicadas a essa lista de bancos de dados. Este valor deve corresponder a um plan_id valor em msdb.dbo.sysdbmaintplans.

- Rpt text_file

Especifica o caminho completo e o nome do ficheiro 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 forma, no final do nome do ficheiro mas antes do ponto, na forma _<yyyyMMddhhmm>. <yyyy> = ano, <MM> = mês, <dd> = dia, <hh> = hora, <mm> = minuto.

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

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

O nome do arquivo gerado é:

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

O nome de arquivo UNC (Convenção de Nomenclatura Universal) completo é necessário para text_file quando sqlmaint acessa um servidor remoto.

-Para operator_name

Especifica o operador para o qual o relatório gerado é enviado por meio do SQL Mail.

- HtmlRpt html_file

Especifica o caminho completo e o nome do ficheiro no qual um relatório HTML é gerado. O sqlmaint gera o nome do ficheiro adicionando uma string do formato _<yyyyMMddhhmm> ao nome do ficheiro, tal como faz com o -Rpt parâmetro.

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

-DelHtmlRpt <time_period>

Apaga qualquer relatório HTML no diretório de relatórios se o intervalo de tempo após a criação do ficheiro do relatório exceder o período de tempo. -DelHtmlRpt procura ficheiros cujo nome corresponda ao padrão gerado pelo parâmetro html_file . Se html_file estiver C:\Program Files\Microsoft SQL Server\MSSQL\Backup\AdventureWorks2022_maint.htm, -DelHtmlRpt faz com que o sqlmaint apague quaisquer ficheiros 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 da base de dados especificada em -D. Essa opção só é útil para bancos de dados definidos para crescer automaticamente. Threshold_percent especifica em megabytes o tamanho que o banco de dados deve alcançar antes que o sqlmaint tente remover o espaço de dados não utilizado. Se o banco de dados for menor que o threshold_percent, nenhuma ação será executada. Free_percent especifica quanto espaço não utilizado deve permanecer no banco de dados, especificado como uma porcentagem do tamanho final do banco de dados.

Por exemplo, se um banco de dados de 200 MB contiver 100 MB de dados, especificar 10 para free_percent resultará no tamanho final do banco de dados de 110 MB. Uma base de dados não é expandida se for menor que a soma de free_percent e a quantidade de dados. Por exemplo, se uma base de dados de 108 MB tiver 100 MB de dados, especificar 10 para free_percent não expande a base de dados para 110 MB; mantém-se nos 108 MB.

-CkDB | -CkDBNoIdx

Especifica que uma instrução DBCC CHECKDB , ou uma DBCC CHECKDB instrução com a NOINDEX opção, corre na base de dados especificada em -D.

O sqlmaint escreve um aviso para text_file se a base de dados estiver em uso durante a execução.

-CkAl | -CkAlNoIdx

Especifica que uma instrução DBCC CHECKALLOC com a NOINDEX opção corre na base de dados especificada em -D.

-CkCat

Especifica que uma instrução DBCC CHECKCATALOG corre na base de dados especificada em -D.

-UpdOptiStats sample_percent

Especifica que a seguinte instrução é executada em cada tabela da base de dados:

UPDATE STATISTICS table WITH SAMPLE sample_percent PERCENT;

Se as tabelas conterem colunas calculadas, também deve especificar o -SupportedComputedColumn argumento quando usar -UpdOptiStats.

Para obter mais informações, consulte ATUALIZAR ESTATÍSTICAS.

-RebldIdx free_space

Especifica que os índices das tabelas na base de dados de destino devem ser reconstruídos utilizando a percentagem de free_space como o inverso do fator de preenchimento. Por exemplo, se a percentagem de espaço_livre for 30, então o fator de enchimento usado é 70. Se for especificado um valor percentual free_space de 100, os índices são reconstruídos com o valor original do fator de preenchimento.

Se os índices estiverem em colunas calculadas, também deve especificar o argumento -SupportComputedColumn ao utilizar -RebldIdx.

-Coluna Computada de Suporte

Deve ser especificado para executar DBCC comandos de manutenção com sqlmaint em colunas calculadas.

-WriteHistory

Especifica que uma entrada é feita msdb.dbo.sysdbmaintplan_history para cada ação de manutenção realizada pelo sqlmaint. Se -PlanName ou -PlanID for especificado, as entradas em sysdbmaintplan_history utilizam o ID do plano especificado. Se -D for especificado, as entradas em sysdbmaintplan_history sã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 toda a base de dados. -BkUpLog Só faz backup do registo de transações.

backup_path especifica o diretório para o backup. backup_path não é necessário se -UseDefDir também for especificado, e -UseDefDir sobrepõe-se backup_path se ambos estiverem especificados. A cópia de segurança pode ser colocada num diretório ou num endereço de dispositivo de fita (por exemplo, \\.\TAPE0). O nome do arquivo para um backup de banco de dados é gerado automaticamente da seguinte maneira:

dbname_db_yyyyMMddhhmm.BAK

Where:

  • <dbname> é o nome da base de dados que está a ser guardada.
  • <yyyyMMddhhmm> é o tempo 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ção é gerado automaticamente com um formato semelhante:

dbname_log_yyyymmddhhmm.BAK

Se usar o -BkUpDB parâmetro, também deve especificar o meio usando o -BkUpMedia parâmetro.

-BkUpMedia

Especifica o tipo de media da cópia de segurança, seja DISK ou TAPE.

DISCO

Especifica que a mídia de backup é o disco.

-DelBkUps <time_period>

Para backups de disco, especifica que qualquer ficheiro de backup no diretório de backup seja eliminado 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 predefinido se -UseDefDir também for especificado. O nome do subdiretório é gerado a partir do nome da base de dados especificado em -D. -CrBkSubDir Oferece uma forma fácil de colocar todas as cópias de segurança de diferentes bases de dados 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 de backup padrão. UseDefDir substitui backup_path se ambos forem especificados. Com uma configuração padrão de SQL Server, o diretório de backup predefinido é C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup.

FITA

Especifica que a mídia de backup é fita.

-BkUpOnlyIfClean

Especifica que o backup só ocorre 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, -CkTxtAl, ou -CkCat antes dos -BkUpDB parâmetros ou -BkUpLog se também for especificar -BkUpOnlyIfClean. Se não especificar estes parâmetros, o backup ocorre independentemente de a verificação reportar ou não problemas.

-VrfyBackup

Especifica que RESTORE VERIFYONLY é executado no backup quando este termina.

Número [ minutos| horas| dia| semanas| meses]

Especifica o intervalo de tempo usado para determinar se um relatório ou arquivo de backup é antigo o suficiente para ser excluído. número é um número inteiro seguido (sem espaço) por uma unidade de tempo. Exemplos válidos:

  • 12weeks
  • 3months
  • 15days

Se especificar apenas o número, a parte da data padrão é weeks.

Observações

O utilitário sqlmaint executa operações de manutenção em um ou mais bancos de dados. Se especificar -D, a utilidade realiza as operações especificadas nos switches restantes apenas na base de dados especificada. Se especificar -PlanName ou -PlanID, a única informação que o sqlmaint recupera do plano de manutenção especificado é a lista de bases de dados no plano. Todas as operações especificadas nos parâmetros sqlmaint restantes são aplicadas em cada banco de dados na lista obtida do plano. A utilidade 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 falhar. A falha é reportada 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.

  • Encontra-se uma falha geral.

Permissões

Qualquer utilizador do Windows com permissão de Leitura e Execução ativada sqlmaint.exe pode executar a utilidade sqlmaint . Por defeito, sqlmaint.exe está armazenado na <X>:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER1\MSSQL\Binn pasta. Além disso, o login do SQL Server que especifica -login_ID deve ter as permissões do SQL Server necessárias para realizar a ação especificada. Se usar autenticação do Windows para se ligar ao SQL Server, o login do SQL Server mapeado para o utilizador autenticado do Windows deve ter as permissões do SQL Server necessárias para realizar a ação especificada.

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

Exemplos

Um. Realizar verificações DBCC numa base de dados

Este exemplo executa DBCC verificações contra uma base 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 todas as bases de dados de um plano. Qualquer base de dados que atinja 110 MB é reduzida para ter apenas 10% espaço livre.

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

C. Faça backup de todas as bases de dados

Este exemplo efetua o backup de todas as bases de dados para os seus subdiretórios individuais, usando o diretório predefinido <X>:\Program Files\Microsoft SQL Server\MSSQLl13.MSSQLSERVER\MSSQL\Backup. Também apaga quaisquer backups com mais de duas semanas.

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

D. Fazer backup de um banco de dados

Este exemplo faz backup de uma única base de dados no diretório predefinido <X>:\Program Files\Microsoft SQL Server\MSSQLl13.MSSQLSERVER\MSSQL\Backup .

sqlmaint -S MyServer -BkUpDB -BkUpMedia DISK -UseDefDir