CORRECÇÃO: Relatório de manutenção de envio por email para o operador falha no plano de manutenção

Traduções deste artigo Traduções deste artigo
ID do artigo: 279867 - Exibir os produtos aos quais esse artigo se aplica.
BUG #: 351140 (SHILOH_BUGS)
Expandir tudo | Recolher tudo

Sintomas

Um plano de manutenção de banco de dados do SQL Server inclui uma opção para enviar um relatório de manutenção (ou seja, um arquivo que contém os resultados para a execução do plano de manutenção) por email para um operador predefinido no servidor. Enviando por email o arquivo de relatório de manutenção para o operador pode falhar com a seguinte mensagem de erro, que pode ser encontrada no relatório de manutenção para o plano de manutenção de banco de dados:
Erro 18025: [Microsoft] [ODBC SQL Server Driver] [SQL Server] xp_sendmail: falhou com erro 0 x 80004005 do email
Este erro não afeta o relatório de status do trabalho; o trabalho propriamente dito é mostrado como bem-sucedido.

Causa

xp_sendmail procedimento armazenado estendido falha com o erro acima quando tentar enviar um arquivo aberto como um anexo de email. Sqlmaint.exe executa o plano de manutenção e grava saída para o arquivo de relatório. A etapa final na manutenção plano de, que deve enviar um email, também é registrada no relatório. Porque o arquivo de relatório ainda está aberto quando xp_sendmail tenta enviá-lo como um anexo, a falha de tentativa.

Resolução

Para resolver esse problema, obtenha o service pack mais recente para o SQL Server 2000. Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
290211INF: Como obter o Service Pack mais recente do SQL Server 2000

Como Contornar

Para uma solução alternativa para esse problema, consulte a seção "Mais informações" deste artigo.

Situação

A Microsoft confirmou que este é um problema no SQL Server 2000. Esse problema foi corrigido primeiro no SQL Server 2000 Service Pack 1.

Mais Informações

Para contornar esse problema, você pode incluir o script abaixo como uma etapa de trabalho adicionais no último trabalho criado por um plano de manutenção específico. Esse script abaixo envia o último arquivo de relatório para um plano de manutenção específico para um endereço de email especificado.

Para usar essa solução alternativa, execute estas etapas:
  1. Identificar o último trabalho para o plano de manutenção.
  2. Clique com o botão direito no trabalho, clique em Propriedades , clique em etapas , selecione a etapa e, em seguida, clique em Editar .
  3. Na caixa de diálogo Editar etapa de trabalho , clique na guia Avançado .
  4. Definido na ação de êxito para Ir para próxima etapa .
  5. Clique em OK na caixa de diálogo Editar etapa de trabalho .
  6. Clique em novo para adicionar uma nova etapa e atribua um nome à etapa. o tipo deve ser Scripts TRANSACTA-SQL (TSQL) e banco de dados deve ser mestre .
  7. Cole o seguinte script na janela de comando:
    declare @planname varchar(100)
    declare @dir varchar(200)
    declare @operator varchar(50)
    declare @cmd varchar (200)
    declare @mailfilename varchar(200)
    declare @filenamelen int
    
    --Values set here can actually be provided as parameters to a stored procedure.
    --If provided as parameters to a stored procedure, rem the following select statements.
    --@plananme is the plan whose maintenance report is sent.
    --@dir is the log directory for SQL Server. It is the directory to which the 
    --maintenance report files are written. 
    --@operator is the email address of the person to whom the report file should be mailed.
    
    select @planname = 'Database Maintenance Plan 1'
    select @dir ='c:\Program Files\Microsoft SQL Server\MSSQL$SQL2K1\LOG'
    select @operator ='email@domain.com'
    --You can automatically set the above by reading various values from SQL Server.
    
    SET NOCOUNT ON
    IF RIGHT (@dir, 1) <> '\' 
    begin
    select @dir =@dir +'\'
    end
    SELECT @dir = 'dir /s /b '+'"'+@dir + @planname+'*.txt'+'"' +' >c:\dir.txt'
    
    create table #TMP_MAINT_FILENAMES (NAME1 varchar(8000))
    exec xp_cmdshell @dir
    BULK INSERT #TMP_MAINT_FILENAMES
       FROM 'c:\dir.txt'
       WITH 
          (
             ROWTERMINATOR = '\n'
          )
    
    select @mailfilename=MAX(name1) from #TMP_MAINT_FILENAMES
    print 'The following file is being sent as an atachement'
    print @mailfilename
    
    --Set the various parameters for xp_sendmail.
    declare @tmpmessage varchar(300)
    declare @tmpsubject varchar(300)
    select @tmpmessage = 'This is the last maintenance report on the server for the maintenance plan '+@planname
    select @tmpsubject = 'SQL Server Maintenance Report for '+@planname
    
    --Send the last file for the maintenance plan.
    exec master..xp_sendmail @recipients= @operator, @subject =@tmpsubject, @message=@tmpmessage, 
    @attachments= @mailfilename
    
    --Perform cleanup here.
    drop table #TMP_MAINT_FILENAMES
    exec master..xp_cmdshell "del c:\dir.txt"
    SET NOCOUNT OFF
    					
  8. Certifique-se que os valores de @ planname, @ dir e @ operador estão definidos no script.
  9. Salve a etapa de trabalho.
Microsoft fornece exemplos de programação apenas para ilustração, sem garantia expressa ou implícita. Isso inclui, mas não está limitado a, garantias implícitas de comercialização ou adequação para uma finalidade específica. Este artigo presume que você está familiarizados com a linguagem de programação que está sendo demonstrada e com as ferramentas que são usadas para criar e depurar procedimentos. Engenheiros de suporte podem ajudar a explicar a funcionalidade de um determinado procedimento, mas eles não modificarão esses exemplos para fornecer funcionalidades adicionais ou construir procedimentos para atender às suas necessidades.

Propriedades

ID do artigo: 279867 - Última revisão: quinta-feira, 23 de junho de 2005 - Revisão: 5.2
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2000 Standard Edition
Palavras-chave: 
kbmt kbbug kbfix kbsqlserv2000sp1fix KB279867 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 279867

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com