Manuais Online do SQL Server 2008 (julho de 2009)
Utilitário sqlmaint

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 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.

ms162827.note(pt-br,SQL.100).gifImportante:
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.

-S server_name[ \instance_name]

Especifica a instância de destino do Microsoft SQL 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.

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

ms162827.security(pt-br,SQL.100).gifObservação sobre segurança:
Quando possível, use a autenticação do Windows.

-P password

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.

ms162827.security(pt-br,SQL.100).gifObservação sobre segurança:
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 deve 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 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.

-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 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.

-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 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.

-HtmlRpt html_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>.

-RmUnusedSpace threshold_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).

-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 contiverem colunas computadas, você também deve especificar o argumento - SupportedComputedColumn quando usar - UpdOptiStats.

Para obter mais informações, consulte 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 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 Microsoft SQL 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
Consulte também

Outros recursos

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

Ajuda e informações

Obtendo assistência do SQL Server 2008
Marcas :


Page view tracker