sysmail_unsentitems(Transact-SQL)

적용 대상:SQL ServerAzure SQL Managed Instance

각 데이터베이스 메일 메시지에 대해 전송되지 않거나 다시 시도 상태가 있는 한 행을 포함합니다. 보내지 않거나 다시 시도 상태인 메시지는 메일 큐에 계속 있으며 언제든지 전송될 수 있습니다. 메시지는 다음과 같은 이유로 들여쓰지 않은 상태를 가질 수 있습니다.

  • 메시지는 새 메시지이며 메시지가 메일 큐에 배치되었지만 데이터베이스 메일은 다른 메시지에서 작업 중이며 아직 이 메시지에 도달하지 않았습니다.

  • 데이터베이스 메일 외부 프로그램이 실행되고 있지 않으며 메일이 전송되지 않습니다.

메시지는 다음과 같은 이유로 다시 시도 상태를 가질 수 있습니다.

  • 데이터베이스 메일이 메일을 보내려고 했지만 SMTP 메일 서버에 연결할 수 없습니다. 데이터베이스 메일은 메시지를 보낸 프로필에 할당된 다른 데이터베이스 메일 계정을 사용하여 메시지를 계속 보내려고 시도합니다. 어떤 계정도 메일을 보낼 수 없는 경우 데이터베이스 메일은 계정 다시 시도 지연 매개 변수에 대해 구성된 시간 동안 기다린 다음 메시지를 다시 보내려고 시도합니다. 데이터베이스 메일은 Account Retry Attempts 매개 변수를 사용하여 메시지를 보낼 횟수를 결정합니다. 데이터베이스 메일이 메시지를 보내려고 시도하는 한 메시지는 다시 시도 상태를 유지합니다.

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

데이터베이스 메일에서 처리된 모든 메시지를 보려면 sysmail_allitems(Transact-SQL)를 사용합니다. 실패한 상태의 메시지만 보려면 sysmail_faileditems(Transact-SQL)를 사용합니다. 전송된 메시지만 보려면 sysmail_sentitems(Transact-SQL)를 사용합니다.

열 이름 데이터 형식 설명
mailitem_id int 메일 큐의 메일 항목 식별자입니다.
profile_id int 메시지 전송에 사용된 프로필의 식별자입니다.
받는 사람 varchar(max) 메시지 받는 사람의 전자 메일 주소입니다.
copy_recipients varchar(max) 메시지 복사본을 받는 사람의 전자 메일 주소입니다.
blind_copy_recipients varchar(max) 메시지 복사본을 수신하지만 메시지 헤더에 이름이 표시되지 않는 사용자의 전자 메일 주소입니다.
subject nvarchar(510) 메시지의 제목 줄입니다.
varchar(max) 메시지의 본문입니다.
body_format varchar(20) 메시지의 본문 형식입니다. 가능한 값은 TEXTHTML입니다.
importance varchar(6) 메시지의 중요도 매개 변수입니다.
감도 varchar(12) 메시지의 민감도 매개 변수입니다.
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) 데이터베이스 메일이 메일을 보내려고 시도하지 않은 경우 보내지 않습니다. 데이터베이스 메일이 메시지를 보내지 못했지만 다시 시도하는 경우 다시 시도 합니다.
sent_date datetime 데이터베이스 메일이 마지막으로 메일을 보내려고 시도한 날짜와 시간입니다. 데이터베이스 메일이 메시지를 보내려고 시도하지 않은 경우 NULL입니다.
last_mod_date datetime 행의 마지막 수정 날짜 및 시간입니다.
last_mod_user sysname 행을 마지막으로 수정한 사용자입니다.

설명

데이터베이스 메일 문제를 해결할 때 이 보기는 전송 대기 중인 메시지 수와 메시지가 대기한 시간을 보여 줌으로써 문제의 특성을 식별하는 데 도움이 될 수 있습니다. 메시지를 보내지 않는 경우 데이터베이스 메일 외부 프로그램이 실행되지 않거나 데이터베이스 메일이 SMTP 서버에 연결할 수 없는 네트워크 문제가 있을 수 있습니다. 많은 전송되지 않은 메시지의 profile_id 동일한 경우 SMTP 서버에 문제가 있을 수 있습니다. 프로필에 계정을 추가하는 것이 좋습니다. 메시지를 보내고 있지만 메시지가 큐에 너무 많은 시간을 소비하는 경우 SQL Server는 필요한 메시지 볼륨을 처리하기 위해 더 많은 리소스가 필요할 수 있습니다.

사용 권한

sysadmin 고정 서버 역할 및 DatabaseMailUserRole 데이터베이스 역할에 부여됩니다. sysadmin 고정 서버 역할의 멤버가 실행하는 경우 이 보기는 모든 전송되지 않은 메시지 또는 재시도 메시지를 표시합니다. 다른 모든 사용자는 제출한 보내지않거나 다시 시도하는 메시지만 볼 수 있습니다.