sysmail_unsentitems (Transact-SQL)
Contém uma linha para cada mensagem do Database Mail com o status unsent ou retrying. As mensagens com status unsent ou retrying ainda estão na fila de email e podem ser enviadas a qualquer momento. As mensagens podem ter o status unsent pelos seguintes motivos:
A mensagem é nova e foi colocada na fila de email, mas o Database Mail está cuidando de outras mensagens e ainda não a alcançou.
O programa externo do Database Mail não está em execução e nenhum email está sendo enviado.
As mensagens podem ter o status retrying pelos seguintes motivos:
- O Database Mail tentou enviar o email, mas o servidor de email SMTP não pôde ser contatado. O Database Mail continuará a tentar enviar a mensagem usando outras contas do Database Mail atribuídas ao perfil que enviou a mensagem. Se nenhuma conta puder enviar o email, o Database Mail aguardará o tempo configurado para o parâmetro Atraso na Repetição de Conta e tentará enviar a mensagem novamente. O Database Mail usa o parâmetro Tentativas de Repetição de Conta para determinar quantas vezes tentará enviar a mensagem. As mensagens manterão o status tentando novamente enquanto o Database Mail tentar enviá-la.
Use essa exibição para saber quantas mensagens estão aguardando o envio e há quanto tempo estão na fila de email. Normalmente, o número de mensagens unsent é baixo. Faça um teste de parâmetro durante as operações normais para determinar um número razoável de mensagens que devam ficar na fila para suas operações.
Para ver todas as mensagens processadas pelo Database Mail, use sysmail_allitems (Transact-SQL). Para ver somente as mensagens com o status de falha, use sysmail_faileditems (Transact-SQL). Para ver somente as mensagens que foram enviadas, use sysmail_sentitems (Transact-SQL).
Nome da coluna |
Tipo de dados |
Descrição |
---|---|---|
mailitem_id |
int |
Identificador do item de email na fila de email. |
profile_id |
int |
O identificador do perfil usado para enviar a mensagem. |
recipients |
varchar(max) |
Os endereços de email dos destinatários da mensagem. |
copy_recipients |
varchar(max) |
Os endereços de email daqueles que recebem cópias da mensagem. |
blind_copy_recipients |
varchar(max) |
Os endereços de email daqueles que recebem cópias da mensagem, mas cujos nomes não aparecem no cabeçalho. |
subject |
nvarchar(510) |
A linha de assunto da mensagem. |
body |
varchar(max) |
O corpo da mensagem. |
body_format |
varchar(20) |
O formato do corpo da mensagem. Os valores possíveis são TEXT e HTML. |
importance |
varchar(6) |
O parâmetro de importância da mensagem. |
sensitivity |
varchar(12) |
O parâmetro de sensibilidade da mensagem. |
file_attachments |
varchar(max) |
Uma lista delimitada por ponto-e-vírgula de nomes de arquivo anexada à mensagem de email. |
attachment_encoding |
varchar(20) |
O tipo de anexo de email. |
query |
varchar(max) |
A consulta executada pelo programa de email. |
execute_query_database |
sysname |
O contexto de banco de dados no qual o programa de email executou a consulta. |
attach_query_result_as_file |
bit |
Quando o valor é 0, os resultados da consulta são incluídos no corpo da mensagem de email, depois do conteúdo do corpo. Quando o valor é 1, os resultados são retornados como um anexo. |
query_result_header |
bit |
Quando o valor é 1, os resultados da consulta contêm cabeçalhos de coluna. Quando o valor é 0, resultados da consulta não incluem cabeçalhos de coluna. |
query_result_width |
int |
O parâmetro query_result_width da mensagem. |
query_result_separator |
char(1) |
O caractere usado para separar as colunas na saída da consulta. |
exclude_query_output |
bit |
O parâmetro exclude_query_output da mensagem. Para obter mais informações, consulte sp_send_dbmail (Transact-SQL). |
append_query_error |
bit |
O parâmetro append_query_error da mensagem. 0 indica que o Database Mail não deverá enviar a mensagem de email se houver um erro na consulta. |
send_request_date |
datetime |
A data e a hora em que a mensagem foi colocada na fila de email. |
send_request_user |
sysname |
O usuário que enviou a mensagem. Esse é o contexto de usuário do procedimento de email de banco de dados, e não o campo De da mensagem. |
sent_account_id |
int |
O identificador da conta do Database Mail usado para enviar a mensagem. Será sempre NULL para essa exibição. |
sent_status |
varchar(8) |
Será unsent se o Database Mail não tentar enviar o email. Será retrying se o Database Mail falhar ao enviar a mensagem, mas tentar novamente. |
sent_date |
datetime |
A data e a hora em que o Database Mail tentou enviar o email pela última vez. Será NULL se o Database Mail não tentar enviar a mensagem. |
last_mod_date |
datetime |
A data e a hora da última modificação da linha. |
last_mod_user |
sysname |
O usuário que modificou a linha pela última vez. |
Comentários
Na solução de problemas do Database Mail, essa exibição pode ajudá-lo a identificar a natureza do problema, mostrando o número de mensagens a serem enviadas e há quanto tempo estão aguardando o envio. Se nenhuma mensagem for enviada, talvez o programa externo do Database Mail não esteja funcionando ou haja um problema de rede impedindo que ele entre em contato com os servidores SMTP. Se muitas mensagens não enviadas tiverem o mesmo profile_id, talvez haja um problema com o servidor de SMTP. Considere a opção de adicionar outras contas ao perfil. Se as mensagens forem enviadas, mas estiverem aguardando muito tempo na fila, talvez sejam necessários mais recursos para o SQL Server processar o volume requisitado de mensagens.
Permissões
Concedidas à função de servidor fixa sysadmin e à função de banco de dados DatabaseMailUserRole. Quando executado por um membro da função de servidor fixa sysadmin, essa exibição mostra todas as mensagens unsent ou retrying. Todos os outros usuários vêem apenas as mensagens unsent ou retrying que enviaram.