sp_send_dbmail (Transact-SQL)

Wysyła wiadomość e-mail do określonych adresatów.Wiadomość może zawierać zestaw wyników kwerendy, załączniki lub jedno i drugie.Kiedy poczty pomyślnie jest umieszczana w kolejce wiadomości bazy danych, sp_send_dbmail z zwraca wartośćmailitem_id wiadomości.Ta procedura przechowywana jest w msdb bazy danych.

Topic link iconKonwencje składni języka Transact-SQL

sp_send_dbmail [ [ @profile_name = ] 'profile_name' ]
    [ , [ @recipients = ] 'recipients [ ; ...n ]' ]
    [ , [ @copy_recipients = ] 'copy_recipient [ ; ...n ]' ]
    [ , [ @blind_copy_recipients = ] 'blind_copy_recipient [ ; ...n ]' ]
    [ , [ @from_address = ] 'from_address' ]
    [ , [ @reply_to = ] 'reply_to' ]
    [ , [ @subject = ] 'subject' ] 
    [ , [ @body = ] 'body' ] 
    [ , [ @body_format = ] 'body_format' ]
    [ , [ @importance = ] 'importance' ]
    [ , [ @sensitivity = ] 'sensitivity' ]
    [ , [ @file_attachments = ] 'attachment [ ; ...n ]' ]
    [ , [ @query = ] 'query' ]
    [ , [ @execute_query_database = ] 'execute_query_database' ]
    [ , [ @attach_query_result_as_file = ] attach_query_result_as_file ]
    [ , [ @query_attachment_filename = ] query_attachment_filename ]
    [ , [ @query_result_header = ] query_result_header ]
    [ , [ @query_result_width = ] query_result_width ]
    [ , [ @query_result_separator = ] 'query_result_separator' ]
    [ , [ @exclude_query_output = ] exclude_query_output ]
    [ , [ @append_query_error = ] append_query_error ]
    [ , [ @query_no_truncate = ] query_no_truncate ]
    [ , [ @mailitem_id = ] mailitem_id ] [ OUTPUT ]

Argumenty

  • [ @profile_name= ] 'profile_name'
    Jest nazwą profilu, aby wysłać wiadomość.The profile_name is of type sysname, with a default of NULL.The profile_name must be the name of an existing Database Mail profile.Jeśli nie profile_name jest określony, sp_send_dbmail używa domyślnego profilu prywatnego dla bieżącego użytkownika.Jeśli użytkownik nie ma domyślnego profilu prywatnego sp_send_dbmail używa domyślnego profilu publicznegomsdb bazy danych.Jeśli użytkownik nie ma domyślnego profilu prywatnego i nie ma profilu publicznego nie domyślną bazę danych, @ nazwa_profilu musi być określona.

  • [ @recipients= ] 'recipients'
    Jest to lista adresów e-mail, aby wysłać wiadomość do rozdzielanych średnikami.Lista adresatów jest typu varchar(max). Ten parametr jest opcjonalny, co najmniej jeden z @ adresatów, @ copy_recipients, or @ blind_copy_recipients musi być określona, lub sp_send_dbmail zwraca błąd.

  • [ @copy_recipients= ] 'copy_recipients'
    Czy lista rozdzielanych średnikami e-mail adresów do wiadomości do wiadomości.Lista adresatów kopii jest typu varchar(max). Ten parametr jest opcjonalny, co najmniej jeden z @ adresatów, @ copy_recipients, or @ blind_copy_recipients musi być określona, lub sp_send_dbmail zwraca błąd.

  • [ @blind_copy_recipients= ] 'blind_copy_recipients'
    Czy lista rozdzielanych średnikami e-mail adresów niewidomych kopii węgla do wiadomości.Typ jest ukryte listy adresatów varchar(max). Ten parametr jest opcjonalny, co najmniej jeden z @ adresatów, @ copy_recipients, or @ blind_copy_recipients musi być określona, lub sp_send_dbmail zwraca błąd.

  • [ @from_address= ] 'from_address'
    Jest to wartość "spod adresu" wiadomości e-mail.Jest to parametr opcjonalny używany do zastąpienia ustawień profilu poczty.Ten parametr jest typu varchar(MAX). Ustawienia zabezpieczeń SMTP decydują o tym, czy te przesłonięcia są akceptowane.Jeżeli parametr nie zostanie określony, domyślnie jest NULL.

  • [ @reply_to= ] 'reply_to'
    Jest to wartość „ odpowiedź do adresu"wiadomości e-mail.Jest to parametr opcjonalny używany do zastąpienia ustawień profilu poczty.Ten parametr jest typu varchar(MAX). Ustawienia zabezpieczenia SMTP określają, czy te przesłonięcia są akceptowane.Jeżeli parametr nie zostanie określony, domyślnie jest NULL.

  • [ @subject= ] 'subject'
    Jest temat wiadomości e-mail.Temat jest typu nvarchar(255). Jeżeli przedmiot nie zostanie określony, wartość domyślna to "SQL Server wiadomości".

  • [ @body= ] 'body'
    Czy treść wiadomości e-mail.Treść wiadomości jest typu nvarchar(max), z domyślną wartość NULL.

  • [ @body_format= ] 'body_format'
    Jest formatem treści wiadomości.Parametr jest typu varchar(20), z domyślną wartość NULL. Po określeniu nagłówków wiadomości wychodzące są ustawione na wskazują, że treść wiadomości w określonym formacie.Ten parametr może zawierać jedną z następujących wartości:

    • TEKST

    • HTML

    Wartością domyślną jest tekst.

  • [ @importance= ] 'importance'
    Czy ważności wiadomości.Parametr jest typu varchar(6). Ten parametr może zawierać jedną z następujących wartości:

    • Low

    • Normalny

    • High

    Wartością domyślną jest normalny.

  • [ @sensitivity= ] 'sensitivity'
    Czy charakter wiadomości.Parametr jest typu varchar(12). Ten parametr może zawierać jedną z następujących wartości:

    • Normalny

    • Osobiste

    • Prywatne

    • Poufne

    Wartością domyślną jest normalny.

  • [ @file_attachments= ] 'file_attachments'
    Jest rozdzielaną średnikami listę nazw plików, aby dołączyć do wiadomości e-mail.Pliki na liście, musi być określona jako ścieżki bezwzględne.Lista załączników jest typu nvarchar(max). Domyślnie Poczta bazy danych ogranicza załączników do 1 MB na plik.Aby uzyskać więcej informacji zobaczDatabase Mail Configuration Wizard.

  • [ @query= ] 'query'
    Jest kwerendą do wykonać.Wyniki kwerendy mogą mieć dołączone jako plik lub zawarte w treści wiadomości e-mail.Kwerenda jest typu nvarchar(max)i może zawierać wszelkie ważne Transact-SQL instrukcje. Należy zauważyć, że kwerenda jest wykonywana w oddzielnych sesja, więc lokalnych zmiennych w telefonicznej skryptu sp_send_dbmail nie są dostępne do kwerendy.

  • [ @execute_query_database= ] 'execute_query_database'
    Jest kontekstem bazy danych, w której procedura przechowywana wykonuje kwerendę.Parametr jest typu sysname, z domyślną bieżącej bazy danych. Ten parametr dotyczy jedynie jeśli @ kwerendy została określona.

  • [ @attach_query_result_as_file= ] attach_query_result_as_file
    Specifies whether the result set of the query is returned as an attached file.attach_query_result_as_file is of type bit, with a default of 0.

    Gdy wartość jest równa 0, wyniki kwerendy są uwzględniane w treści wiadomości e-mail po zawartość @ treści parametr.Jeśli wartością jest 1, wyniki są zwracane jako załącznik.Ten parametr dotyczy jedynie jeśli @ kwerendy została określona.

  • [ @query_attachment_filename= ] query_attachment_filename
    Specifies the file name to use for the result set of the query attachment.query_attachment_filename is of type nvarchar(255), with a default of NULL.Ten parametr jest ignorowany podczas attach_query_result jest równa 0. Kiedy attach_query_result to 1, a ten parametr ma wartość NULL, poczta bazy danych tworzy dowolnego pliku.

  • [ @query_result_header= ] query_result_header
    Określa, czy wyniki kwerendy zawierają kolumna nagłówków.Wartość query_result_header jest typu bit. Jeśli wartość wynosi 1, wyniki kwerendy zawierają kolumna nagłówków.Jeśli wartość jest równa 0, wyniki kwerendy nie należy dołączać kolumna nagłówków.Domyślnie przyjmuje wartość tego parametru 1.Ten parametr dotyczy jedynie jeśli @ kwerendy została określona.

  • [ @ query_result_width = ] query_result_width
    Jest szerokością wiersza w znakach, aby użyć formatowania wyniki kwerendy.The query_result_width is of type int, with a default of 256.Podana wartość musi być od 10 do 32767.Ten parametr dotyczy jedynie jeśli @ kwerendy została określona.

  • [ @query_result_separator= ] 'query_result_separator'
    Znak jest używany do oddzielania kolumn w wynikach kwerendy.Separator jest typu char(1). Domyślnie przyjmuje wartość „ "(spacja).

  • [ @exclude_query_output= ] exclude_query_output
    Specifies whether to return the output of the query execution in the e-mail message.exclude_query_output is bit, with a default of 0.Kiedy ten parametr jest równa 0, wykonanie sp_send_dbmail procedura przechowywana drukuje komunikat zwrócony w wyniku wykonania kwerendy na konsoli.Kiedy ten parametr jest 1, wykonanie sp_send_dbmail przechowywane procedury nie drukuje jedną z wiadomości wykonanie kwerendy na konsoli.

  • [ @append_query_error= ] append_query_error
    Specifies whether to send the e-mail when an error returns from the query specified in the @query argument.append_query_error is bit, with a default of 0.Jeśli ten parametr ma wartość 1, poczta bazy danych do wysyłania wiadomości e-mail i zawiera komunikat o błędzie kwerendy w treści wiadomości e-mail.Kiedy ten parametr ma wartość 0, poczta bazy danych nie wysyła wiadomości e-mail i sp_send_dbmail kończy się na kod zwrotny 1, wskazująca błąd.

  • [ @query_no_truncate= ] query_no_truncate
    Określa, czy wykonać kwerendy przy użyciu opcji, które pozwala uniknąć obcięcia dużych o zmiennej długości () typy danychvarchar(max), nvarchar(max), varbinary(max), xml, text, ntext, imageoraz typy danych zdefiniowane przez użytkownika). Po ustawieniu, wyniki kwerendy nie należy dołączać nagłówków kolumn.The query_no_truncate value is of type bit.Jeśli wartością jest 0 lub nie określono, kolumny w kwerendzie obcięta do 256 znaków.Jeśli wartością jest 1, kolumny w kwerendzie nie są obcinane.Ten parametr jest domyślnie na wartość 0.

    Uwaga

    W przypadku użycia z dużą ilością danych, @query_no_truncate opcja pochłania dodatkowe zasoby i może zmniejszyć wydajność serwera.

  • [ @mailitem_id= ] mailitem_id [ OUTPUT ]
    Zwraca wartość parametru wyjściowego opcjonalne mailitem_id wiadomości. The mailitem_id is of type int.

Wartości kodów powrotnych

Kod powrotny 0 oznacza sukces.Każda inna wartość oznacza błąd.Kod błędu dla instrukcja, które nie są przechowywane w zmiennej ERRROR @@.

Zestawy wyników

W przypadku powodzenia zwraca komunikat "Mail kolejkowane."

Remarks

Przed użyciem poczty baza danych musi być włączona przy użyciu Kreatora konfiguracja poczty bazy danych, lub sp_configure.

sysmail_stop_sp stops Database Mail by stopping the Service Broker objects that the external program uses.sp_send_dbmail still accepts mail when Database Mail is stopped using sysmail_stop_sp.Uruchom program Poczta bazy danych, należy użyć sysmail_start_sp.

Kiedy @ profilu nie określono sp_send_dbmail używa domyślnego profilu.Gdy użytkownik wysyła wiadomość e-mail ma domyślnego profilu prywatnego, poczta bazy danych używa tego profilu.Jeśli użytkownik nie ma żadnych prywatnych profil domyślny sp_send_dbmail używa domyślnego profilu publicznego.Jeśli nie ma żadnych domyślny profil prywatny dla użytkownika i nie domyślnego profilu publicznego, sp_send_dbmail zwraca błąd.

sp_send_dbmail nie obsługuje wiadomości e-mail z bez zawartości.Aby wysłać wiadomość e-mail, musisz określić co najmniej jeden z @ treści, @ kwerendy, @ file_attachments, or @ tematu.W przeciwnym razie sp_send_dbmail zwraca błąd.

Baza danych używa poczty Microsoft Kontekst zabezpieczeń bieżącego użytkownika w celu kontrolowania dostępu do plików systemu Windows. Dlatego użytkownicy, którzy są uwierzytelniane z SQL Server Uwierzytelnianie nie można dołączać plików przy użyciu @ file_attachments.System Windows nie zezwala na SQL Server Aby podać poświadczenia ze zdalnego komputera do innego komputera zdalnego. Dlatego poczty bazy danych może być niemożliwe do dołączania plików z udziału sieciowego, w przypadkach, gdy polecenie jest wykonywane z komputera innego niż komputer, SQL Server Uruchamia.

Jeśli oba @ kwerendy and @ file_attachments są określone, i nie można odnaleźć pliku, kwerendy jest nadal wykonywany, lecz nie jest wysyłana wiadomość e-mail.

Po określeniu kwerendy zestaw wyników jest formatowana jako tekst wbudowany.Dane binarne w wyniku jest wysyłany w formacie szesnastkowym.

Parametry @ adresatów, @ copy_recipients, and @ blind_copy_recipients są rozdzielane średnikami listę adresów e-mail.Należy podać co najmniej jeden z tych parametrów, lub sp_send_dbmail zwraca błąd.

Podczas wykonywania sp_send_dbmail bez kontekstu transakcji, poczta bazy danych rozpoczyna się i zatwierdza transakcję niejawnych.Podczas wykonywania sp_send_dbmail z istniejących transakcji, poczta bazy danych zależy od użytkownika albo zatwierdzić lub cofnąć wszystkie zmiany.Transakcja wewnętrzna nie zostanie uruchomiony.

Uprawnienia

Uprawnienia do wykonywania sp_send_dbmail Domyślnie wszyscy członkowie DatabaseMailUser rola bazy danych msdb bazy danych.Jednak, gdy użytkownik wysyła wiadomość nie ma uprawnień do korzystania z profilu dla żądania, sp_send_dbmail zwraca błąd i nie wysyła wiadomość.

Przykłady

A.Wysyłanie wiadomości e-mail

W tym przykładzie wysyła wiadomość e-mail do daN Wilson przy użyciu adresu e-mail danw@Adventure-Works.com. Wiadomość zawiera temat Automated Success Message. Treść wiadomości zawiera zdania 'The stored procedure finished successfully'.

EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'AdventureWorks Administrator',
    @recipients = 'danw@Adventure-Works.com',
    @body = 'The stored procedure finished successfully.',
    @subject = 'Automated Success Message' ;

B.Wysyłanie wiadomości e-mail z wyniki kwerendy

W tym przykładzie wysyła wiadomość e-mail do daN Wilson przy użyciu adresu e-mail danw@Adventure-Works.com. Wiadomość zawiera temat Work Order Counti wykonuje kwerendę, która pokazuje liczbę zamówień z DueDate mniej niż dwa dni po 30 kwietnia 2004 r. Poczta bazy danych dołącza wyników jako plik tekstowy.

EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'AdventureWorks Administrator',
    @recipients = 'danw@Adventure-Works.com',
    @query = 'SELECT COUNT(*) FROM AdventureWorks.Production.WorkOrder
                  WHERE DueDate > ''2004-04-30''
                  AND  DATEDIFF(dd, ''2004-04-30'', DueDate) < 2' ,
    @subject = 'Work Order Count',
    @attach_query_result_as_file = 1 ;

C.Wysyłanie wiadomości e-mail w formacie HTML

W tym przykładzie wysyła wiadomość e-mail do daN Wilson przy użyciu adresu e-mail danw@Adventure-Works.com. Wiadomość zawiera temat Work Order List, a zawiera dokument HTML, który zawiera zleceń roboczych ze DueDate mniej niż dwa dni po 30 kwietnia 2004 r. Baza danych programu Poczta wiadomość zostanie wysłana w formacie HTML.

DECLARE @tableHTML  NVARCHAR(MAX) ;

SET @tableHTML =
    N'<H1>Work Order Report</H1>' +
    N'<table border="1">' +
    N'<tr><th>Work Order ID</th><th>Product ID</th>' +
    N'<th>Name</th><th>Order Qty</th><th>Due Date</th>' +
    N'<th>Expected Revenue</th></tr>' +
    CAST ( ( SELECT td = wo.WorkOrderID,       '',
                    td = p.ProductID, '',
                    td = p.Name, '',
                    td = wo.OrderQty, '',
                    td = wo.DueDate, '',
                    td = (p.ListPrice - p.StandardCost) * wo.OrderQty
              FROM AdventureWorks.Production.WorkOrder as wo
              JOIN AdventureWorks.Production.Product AS p
              ON wo.ProductID = p.ProductID
              WHERE DueDate > '2004-04-30'
                AND DATEDIFF(dd, '2004-04-30', DueDate) < 2 
              ORDER BY DueDate ASC,
                       (p.ListPrice - p.StandardCost) * wo.OrderQty DESC
              FOR XML PATH('tr'), TYPE 
    ) AS NVARCHAR(MAX) ) +
    N'</table>' ;

EXEC msdb.dbo.sp_send_dbmail @recipients='danw@Adventure-Works.com',
    @subject = 'Work Order List',
    @body = @tableHTML,
    @body_format = 'HTML' ;

Historia zmian

Microsoft Learning

Informacje o nowych parametrów @ from_address i @ reply_to zostało dodane do sekcji składnię i argumenty.