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 consultar 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 consultar 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.

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 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 veem apenas as mensagens unsent ou retrying que enviaram.