FIX: 유지 관리 계획 연산자 전자 메일로 보내기 유지 관리 보고서 실패한다

기술 자료 번역 기술 자료 번역
기술 자료: 279867 - 이 문서가 적용되는 제품 보기.
# 버그: 351140 (SHILOH_BUGS)
모두 확대 | 모두 축소

현상

SQL Server 데이터베이스 유지 관리 계획 전자 메일 서버의 미리 정의된 연산자에 의해 유지 관리 보고서 (즉, 유지 관리 계획의 실행 결과가 포함된 파일) 보내기 위한 옵션이 포함되어 있습니다. 연산자 유지 관리 보고서 파일을 전자 메일로 보내기 위한 데이터베이스 유지 관리 계획 유지 관리 보고서를 찾을 수 있는 다음 오류 메시지와 함께 실패할 수 있습니다.
18025 오류: [Microsoft] [ODBC SQL Server 드라이버] [SQL 서버] xp_sendmail: 메일 오류 0x80004005 실패했습니다.
이 오류는 작업 상태를 보고 영향을, 해당 작업이 성공한 것으로 표시됩니다.

원인

xp_sendmail 확장 저장된 프로시저가 열려 있는 파일에 전자 메일 첨부 파일로 보낼 때 위의 오류와 함께 실패합니다. Sqlmaint.exe 유지 관리 계획이 실행한 후 출력 보고서 파일에 씁니다. 또한 유지 관리, 전자 메일을 보낼 수 있는 계획, 최종 단계는 보고서에 기록됩니다. xp_sendmail 시도가 실패하면, 첨부 파일로 보내려고 시도할 때 보고서 파일이 열려 있기 때문에.

해결 방법

이 문제를 해결하려면 SQL Server 2000의 최신 서비스 팩을 구하십시오. 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
290211INF: SQL Server 2000의 최신 서비스 팩을 구하는 방법

해결 과정

이 문제를 해결하려면이 문서의 "추가 정보" 절을 참조하십시오.

현재 상태

Microsoft은 SQL Server 2000에 문제가 있음을 확인했습니다. 이 문제는 SQL Server 2000 서비스 팩 1에서 처음 수정되었습니다.

추가 정보

이 문제를 해결할 수 있는 특정 유지 관리 계획에 의해 만들어진 마지막 작업 에서 추가 작업 단계로 아래에 스크립트가 포함될 수 있습니다. 이 스크립트를 마지막 보고서 파일이 있는 특정 유지 관리 계획을 지정한 전자 메일 주소로 보냅니다.

이 해결 방법을 사용하려면 다음 이 단계를 수행하십시오.
  1. 유지 관리 계획 마지막 작업을 식별하십시오.
  2. 작업을 마우스 오른쪽 단추로, 속성 을 클릭합니다. 그리고 단계 를 클릭합니다. 그리고 해당 단계를 선택하고 편집 을 클릭하십시오.
  3. 작업 단계 편집 대화 상자에서 고급 탭을 클릭하십시오.
  4. 성공 작업 시다음 단계로 이동 설정하십시오.
  5. 작업 단계 편집 대화 상자에서 확인 을 클릭하십시오.
  6. 새 단계를 추가하려면 새로 클릭한 다음 단계를 사용하여 이름을 지정하십시오. 형식이Transact-SQL 스크립트 (TSQL) 여야 하며 데이터베이스마스터 합니다.
  7. 명령 창에서 다음 스크립트를 붙여넣기:
    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. @ planname, @ dir, 및 @ 연산자의 값은 스크립트에서 설정되어 있는지 확인하십시오.
  9. 작업 단계를 저장하십시오.
Microsoft는 묵시적인 보증 없이 목적으로만 프로그래밍 예제를 제공합니다. 이 포함되지만, 상품성 또는 특정 목적에의 적합성에 대한 묵시적인된 보증이 제한되지 않습니다. 이 문서에서는 만들려면 및 프로시저를 디버깅하는 데 사용되는 도구 및 여기서 설명하는 프로그래밍 언어에 익숙한 사용자를 대상으로 합니다. Microsoft 지원 엔지니어는 사용자에게 도움이 되도록 특정 절차에 대한 기능을 설명할 수 있지만 추가 기능을 제공하거나 특정 요구 사항에 맞도록 프로시저를 구성하지는 이 예제를 수정하지 않습니다.

속성

기술 자료: 279867 - 마지막 검토: 2005년 6월 23일 목요일 - 수정: 5.2
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft SQL Server 2000 Standard Edition
키워드:?
kbmt kbbug kbfix kbsqlserv2000sp1fix KB279867 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

피드백 보내기

 

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