Partilhar via


sysmail_unsentitems (Transact-SQL)

Aplica-se a: SQL Server Instância Gerenciada de SQL do Azure

Contém uma linha para cada mensagem do Database Mail com o status não enviado ou repetindo . 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 não enviado 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 de repetição 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 e-mail, o Database Mail aguardará o período de tempo configurado para o parâmetro Atraso de 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 mantêm o status de repetição enquanto o Database Mail estiver tentando enviar a mensagem.

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 não enviadas será 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 apenas mensagens com o status de falha, use sysmail_faileditems (Transact-SQL). Para ver apenas 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.
Destinatários 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.
Corpo 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.
sensibilidade 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 anexados à mensagem de email.
attachment_encoding varchar(20) O tipo de anexo de email.
consulta 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 continham cabeçalhos de coluna. Quando o valor é 0, os 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 do usuário do procedimento de email do banco de dados, 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á cancelado se o Database Mail não tiver tentado enviar o e-mail. Tentará novamente se o Database Mail não enviar a mensagem, mas estiver tentando 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 das mensagens não enviadas tiverem o mesmo profile_id, pode haver um problema com o servidor SMTP. Considere a opção de adicionar outras contas ao perfil. Se as mensagens estiverem sendo enviadas, mas elas estiverem gastando muito tempo na fila, o SQL Server poderá precisar de mais recursos para processar o volume de mensagens necessário.

Permissões

Concedido à 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 , esse modo de exibição mostra todas as mensagens não enviadas ou repetidas . Todos os outros usuários veem apenas as mensagens não enviadas ou repetidas que enviaram.