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