다음을 통해 공유


sysmail_unsentitems(Transact-SQL)

상태가 unsent 또는 retrying인 각 데이터베이스 메일 메시지당 한 개의 행을 포함합니다. 보내지 않았거나 다시 시도 중인 메시지는 계속 메일 큐에 남아 있으며 언제든 보낼 수 있습니다. 다음과 같은 이유로 메시지가 unsent 상태일 수 있습니다.

  • 새 메시지이며 메일 큐에 있으나 데이터베이스 메일이 다른 메시지를 처리 중이며 아직 이 메시지의 순서가 되지 않았습니다.

  • 데이터베이스 메일 외부 프로그램이 실행 중이 아니며 보낸 메일이 없습니다.

다음과 같은 이유로 메시지가 retrying 상태일 수 있습니다.

  • 데이터베이스 메일이 메일을 보내려고 시도했으나 SMTP 메일 서버에 연결할 수 없습니다. 데이터베이스 메일은 메시지를 보낸 프로필에 할당된 다른 메일 계정을 사용하여 메시지 전송을 다시 시도합니다. 어떤 계정도 메일을 보낼 수 없는 경우 데이터베이스 메일은 계정 다시 시도 간격 매개 변수에 설정된 시간 동안 대기한 후 메시지 전송을 다시 시도합니다. 데이터베이스 메일은 계정 다시 시도 횟수 매개 변수에 지정된 횟수만큼 메시지 전송을 다시 시도합니다. 데이터베이스 메일이 메시지 보내기를 시도하는 동안 메시지는 retrying 상태가 됩니다.

이 뷰를 사용하여 전송 대기 중인 메시지 수와 해당 메시지가 메일 큐에 머문 시간을 확인할 수 있습니다. 일반적으로 unsent 상태인 메시지 수는 적습니다. 정상 작업 중에 벤치마크 테스트를 수행하여 사용자의 작업에 적합한 메시지 큐의 메시지 수를 결정할 수 있습니다.

데이터베이스 메일을 통해 처리된 모든 메시지를 보려면 sysmail_allitems(Transact-SQL)를 사용하십시오. 실패 상태의 메시지만 보려면 sysmail_faileditems(Transact-SQL)를 사용하십시오. 보낸 메시지만 보려면 sysmail_sentitems(Transact-SQL)를 사용합니다.

열 이름

데이터 형식

설명

mailitem_id

int

메일 큐의 메일 항목 식별자입니다.

profile_id

int

메시지 전송에 사용된 프로필의 식별자입니다.

recipients

varchar(max)

메시지를 받는 사람의 전자 메일 주소입니다.

copy_recipients

varchar(max)

메시지 복사본을 받는 사람의 전자 메일 주소입니다.

blind_copy_recipients

varchar(max)

메시지 복사본을 받지만 메시지 머리글에 이름이 표시되지 않는 사람의 전자 메일 주소입니다.

subject

nvarchar(510)

메시지의 제목 줄입니다.

body

varchar(max)

메시지의 본문입니다.

body_format

varchar(20)

메시지 본문의 형식입니다. 가능한 값은 TEXTHTML입니다.

importance

varchar(6)

메시지의 importance 매개 변수입니다.

sensitivity

varchar(12)

메시지의 sensitivity 매개 변수입니다.

file_attachments

varchar(max)

전자 메일 메시지에 첨부되는 파일 이름 목록으로 각 파일 이름은 세미콜론으로 구분되어 있습니다.

attachment_encoding

varchar(20)

메일 첨부 파일의 유형입니다.

query

varchar(max)

메일 프로그램이 실행하는 쿼리입니다.

execute_query_database

sysname

메일 프로그램이 쿼리를 실행한 데이터베이스 컨텍스트입니다.

attach_query_result_as_file

bit

값이 0이면 쿼리 결과가 전자 메일 메시지 본문의 내용 뒤에 포함됩니다. 값이 1이면 결과가 첨부 파일로 반환됩니다.

query_result_header

bit

값이 1이면 쿼리 결과에 열 머리글이 포함됩니다. 값이 0이면 쿼리 결과에 열 머리글이 포함되지 않습니다.

query_result_width

int

메시지의 query_result_width 매개 변수입니다.

query_result_separator

char(1)

쿼리 출력에서 열을 구분하는 데 사용되는 문자입니다.

exclude_query_output

bit

메시지의 exclude_query_output 매개 변수입니다. 자세한 내용은 sp_send_dbmail(Transact-SQL)을 참조하십시오.

append_query_error

bit

메시지의 append_query_error 매개 변수입니다. 0은 쿼리에 오류가 있을 때 데이터베이스 메일이 전자 메일 메시지를 보내지 않음을 나타냅니다.

send_request_date

datetime

메시지가 메일 큐에 추가된 날짜와 시간입니다.

send_request_user

sysname

메시지를 보낸 사용자입니다. 메시지의 보낸 사람 필드가 아니라 데이터베이스 메일 프로시저의 사용자 컨텍스트입니다.

sent_account_id

int

메시지를 보내는 데 사용되는 데이터베이스 메일 계정의 식별자입니다. 이 뷰의 경우 항상 NULL입니다.

sent_status

varchar(8)

데이터베이스 메일이 메일 보내기를 시도하지 않은 경우 unsent입니다. 데이터베이스 메일이 메시지 보내기에 실패했으며 다시 시도 중인 경우 retrying입니다.

sent_date

datetime

데이터베이스 메일이 마지막으로 메일 보내기를 시도한 날짜와 시간입니다. 데이터베이스 메일이 메시지 보내기를 시도하지 않은 경우 NULL입니다.

last_mod_date

datetime

행을 마지막으로 수정한 날짜와 시간입니다.

last_mod_user

sysname

행을 마지막으로 수정한 사용자입니다.

주의

데이터베이스 메일 문제를 해결할 때 이 뷰를 사용하여 전송 대기 중인 메시지 수와 메시지 대기 시간을 보고 문제의 근원을 확인할 수 있습니다. 보낸 메시지가 없으면 데이터베이스 메일 프로그램이 실행 중이 아니거나 데이터베이스 메일의 SMTP 서버 접속을 차단하는 네트워크 문제가 있을 수 있습니다. 전송되지 않은 많은 메시지의 profile_id가 같은 경우 해당 SMTP 서버에 문제가 있을 수 있습니다. 이 경우 프로필에 계정을 추가하는 방법을 고려하십시오. 메시지가 전송되지 않았으나 큐에서 너무 오래 대기 중인 경우 필요한 메시지 양을 처리하기 위해 SQL Server가 더 많은 리소스를 필요로 하는 것일 수 있습니다.

사용 권한

사용 권한은 sysadmin 고정 서버 역할 및 DatabaseMailUserRole 데이터베이스 역할에 부여됩니다. sysadmin 고정 서버 역할의 멤버가 이 뷰를 실행하면 모든 unsent 또는 retrying 메시지가 표시됩니다. 다른 모든 사용자는 자신이 제출한 unsent 또는 retrying 메시지만 볼 수 있습니다.

참고 항목

태스크