데이터베이스 메일 문제 해결: 로컬 서버 문제 해결 시 원격 서버에서 메일 보내기

새 설치: 2006년 12월 12일

이 항목에서는 원격 서버를 사용하여 로컬 서버에서 생성되는 전자 메일을 일시적으로 보낼 수 있는 방법에 대해 설명합니다. 이 절차는 로컬 서버에서 데이터베이스 메일 구성 문제를 해결하고 복구할 때 유용합니다. 이 항목은 데이터베이스 메일로 보낸 전자 메일에만 적용됩니다. xp_sendmail이나 타사 유틸리티를 사용하여 보낸 전자 메일은 영향을 받지 않습니다.

[!참고] 이 항목에서 로컬 서버는 문제를 해결 중인 서버를 참조하고 원격 서버는 문제 해결 시 로컬 서버의 전자 메일을 전송 중인 다른 서버를 참조합니다.

전자 메일은 한 번에 하나의 서버에서만 보낼 수 있습니다. 원격 서버의 데이터베이스 메일이 로컬 서버의 전자 메일을 보내도록 구성되면 원격 서버는 더 이상 자체 전자 메일은 보낼 수 없습니다.

원격 서버가 로컬 서버에서 생성된 전자 메일을 보내고 있을 때 해당 전자 메일의 msdb 테이블에 대한 모든 삽입과 해당 전자 메일에 대한 모든 데이터베이스 메일 로그 오류 항목이 로컬 서버에서 발생합니다. 원격 서버가 로컬 서버의 전자 메일을 전송하도록 구성된 경우 로컬 서버에서 전자 메일 전송을 재개하면 두 서버 중 하나가 전자 메일 메시지를 보낼 수 있습니다. 전자 메일 메시지를 보낸 서버를 확인하려면 메시지의 머리글을 확인해야 합니다.

[!참고] 다음 절차를 실행하려면 로컬 서버와 원격 서버 둘 다에서 SQL Server 2005 서비스 팩 2 이상을 실행해야 합니다.

절차

로컬 서버의 전자 메일 메시지를 보내도록 원격 서버를 구성하려면

  1. 데이터베이스 메일이 원격 서버에 설정되어 있어야 합니다. 데이터베이스 메일을 설정하는 방법은 데이터베이스 메일 방법 도움말 항목을 참조하십시오.

  2. 문제를 해결하는 동안 생성된 전자 메일에서 사용할 로컬 서버의 각 프로필과 같은 원격 서버 프로필을 만듭니다. 각 프로필에는 올바른 계정이 있어야 하지만 로컬 서버의 동일한 프로필과 관련된 계정과 이 계정이 같을 필요는 없습니다.

  3. 로컬 서버에서 DatabaseMailUserRole의 멤버인 Windows 인증 로그인 계정의 경우, 로컬 서버에서 생성된 전자 메일을 보내는 데 해당 멤버 자격이 필요하다면 원격 서버에서도 동일한 역할의 멤버여야 합니다

  4. 다음과 같은 내용으로 DatabaseMail90.exe.config라는 텍스트 파일을 만듭니다. LocalServerName을 로컬 서버의 이름으로 바꾸고 DatabaseNamemsdb를 그대로 사용합니다.

    <configuration>
        <appSettings>
            <add key="DatabaseServerName" value ="LocalServerName" />
            <add key="DatabaseName" value ="msdb" />
        </appSettings>
    </configuration>
    
  5. 파일을 원격 서버의 같은 폴더 \MSSQL\Binn에 DatabaseMail90.exe로 저장합니다. 기본 경로는 < drive >\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn입니다.

  6. 다른 서버에서 전자 메일을 보내도록 데이터베이스 메일을 구성하려면 원격 서버에서 다음 코드를 실행합니다.

    Bb326746.note(ko-kr,SQL.90).gif중요:
    이 코드는 시스템 테이블에 레코드 하나를 삽입합니다. 코드는 수정하지 마십시오. 제약 조건으로 인해 레코드가 두 번 이상 삽입되지 않습니다. 이러한 제약 조건이 없더라도 이 시스템 테이블에서 데이터를 직접 수정하지 마십시오.
    USE msdb;
    GO
    INSERT INTO [msdb].[dbo].[sysmail_configuration]
        (
        [paramname]
        ,[paramvalue]
        ,[description]
        )
    VALUES
        (
        N'ReadFromConfigurationFile'
        ,N'1'
        ,N'Send mail from mail server in configuration file'
        );
    GO
    
  7. 원격 서버에서 dbo.sysmail_start_sp를 실행하여 데이터베이스 메일을 다시 시작합니다. dbo.sysmail_configuration 있는 ReadFromConfigurationFile 레코드에 대한 paramvalue 또는 DatabaseMail90.exe.config 구성 파일에 있는 DatabaseServerName 키의 값을 변경할 때마다 변경 내용이 적용되도록 이 저장 프로시저를 실행해야 합니다.

    USE msdb;
    GO
    EXEC dbo.sysmail_start_sp;
    GO
    

로컬 서버의 전자 메일 메시지 전송을 중지하도록 원격 서버를 다시 구성하려면

  1. 로컬 서버에서 전자 메일 전송을 재개하려면 원격 서버에서 다음 코드를 실행합니다. 이 코드는 로컬 서버에서 생성된 전자 메일의 전송을 중지하고 원격 서버에서 생성된 전자 메일을 다시 전송하도록 원격 서버를 구성합니다.

    USE msdb;
    GO
    EXEC sysmail_configure_sp 
        @parameter_name = N'ReadFromConfigurationFile'
        ,@parameter_value = N'0';
    GO
    
  2. 원격 서버에서 dbo.sysmail_start_sp를 실행하여 데이터베이스 메일을 다시 시작합니다. dbo.sysmail_configuration 있는 ReadFromConfigurationFile 레코드에 대한 paramvalue 또는 DatabaseMail90.exe.config 구성 파일에 있는 DatabaseServerName 키의 값을 변경할 때마다 변경 내용이 적용되도록 이 저장 프로시저를 실행해야 합니다.

    USE msdb;
    GO
    EXEC dbo.sysmail_start_sp;
    GO
    

원격 서버의 데이터베이스 메일 구성을 전환하려면

  • 다른 서버에서 생성된 전자 메일 메시지를 보내도록 원격 서버를 전환하려면 msdb.dbo.sysmail_configuration에서 ReadFromConfigurationFile 레코드에 대한 parameter_value1로 설정한 다음 msdb.dbo.sysmail_start_sp를 실행합니다. 원격 서버에서 생성된 전자 메일을 보내도록 원격 서버를 전환하려면 parameter_value0으로 설정한 다음 msdb.dbo.sysmail_start_sp를 실행합니다.

    USE msdb;
    GO
    EXEC sysmail_configure_sp 
        @parameter_name = N'ReadFromConfigurationFile'
        ,@parameter_value = N'0|1';
    GO
    
  • 다른 로컬 서버에서 생성된 전자 메일을 보내도록 원격 서버를 구성하려면 DatabaseMail90.exe.config 구성 파일에 있는 DatabaseServerName 키의 값을 해당 로컬 서버의 이름으로 변경한 다음 msdb.dbo.sysmail_start_sp를 실행합니다.

사용 권한

기본적으로 sysadmin 고정 서버 역할의 멤버에게는 dbo.sysmail_start_spsysmail_configure_sp에 대한 EXECUTE 권한과 dbo.sysmail_configuration에 대한 INSERT 권한이 부여됩니다.

\MSSQL\Binn에서 구성 파일을 만들려면 NTFS 권한이 필요합니다.

이러한 문제 해결 절차를 실행하는 로그인 계정은 로컬 서버와 원격 서버 둘 다에서 sysadmin 고정 서버 역할의 멤버인 것이 좋습니다.

참고 항목

작업

데이터베이스 메일 문제 해결

도움말 및 정보

SQL Server 2005 지원 받기