sp_send_dbmail (języka Transact-SQL)

Wysyła wiadomość e-mail do określonych adresatów.Wiadomość może zawierać kwerendy, zestaw wyników, załączniki lub oba.Gdy poczta pomyślnie jest umieszczana w kolejce poczty bazy danych sp_send_dbmail zwraca mailitem_id wiadomości.Ta procedura składowana jest w msdb bazy danych.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

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 ]
    [ , [ @query_result_no_padding = ] @query_result_no_padding ] 
    [ , [ @mailitem_id = ] mailitem_id ] [ OUTPUT ]

Argumenty

  • [ @profile_name= ] 'profile_name'
    Jest to nazwa profilu, aby wysłać wiadomość z.profile_name Jest typu sysname, domyślna wartość NULL.profile_name Musi być nazwą istniejącego profilu poczty bazy danych.Gdy 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 korzysta z domyślnego profilu publicznego dla msdb bazy danych.Jeśli użytkownik nie ma domyślnego profilu prywatnego nie ma żadnych domyślnego profilu publicznego dla bazy danych, @ nazwa_profilu musi być określony.

  • [ @recipients= ] 'recipients'
    Jest rozdzielaną średnikami listę adresów e-mail do wysyłania wiadomości.Lista adresatów jest typu varchar(max).Chociaż ten parametr jest opcjonalny, co najmniej jeden z @ adresatów, @ copy_recipients, lub @ blind_copy_recipients musi być określona, lub sp_send_dbmail zwraca błąd.

  • [ @ copy_recipients= ] 'copy_recipients"
    Jest rozdzielaną średnikami listę wiadomości e-mail adresów węgla kopii wiadomości.Kopię listy adresatów jest typu varchar(max).Chociaż ten parametr jest opcjonalny, co najmniej jeden z @ adresatów, @ copy_recipients, lub @ blind_copy_recipients musi być określona, lub sp_send_dbmail zwraca błąd.

  • [ @ blind_copy_recipients= ] 'blind_copy_recipients"
    Jest rozdzielaną średnikami listę wiadomości e-mail adresów do ukryta kopia wiadomości do wiadomości.Ślepy kopię listy adresatów jest typu varchar(max).Chociaż ten parametr jest opcjonalny, co najmniej jeden z @ adresatów, @ copy_recipients, lub @ blind_copy_recipients musi być określona, lub sp_send_dbmail zwraca błąd.

  • [ @from_address= ] 'from_address'
    Jest to wartość adres od wiadomości e-mail.Jest to parametr opcjonalny używany, aby zastąpić ustawienia w profilu poczty.Ten parametr jest typu varchar(MAX).SMTP ustawienia zabezpieczeń określają, czy te zastąpienia są akceptowane.Jeżeli parametr nie jest określony, domyślnie jest NULL.

  • [ @reply_to= ] 'reply_to'
    Jest to wartość odpowiedzi na adres wiadomości e-mail.Akceptuje tylko jeden adres e-mail jako prawidłowej wartości.Jest to parametr opcjonalny używany, aby zastąpić ustawienia w profilu poczty.Ten parametr jest typu varchar(MAX).Ustawienia zabezpieczeniaSMTP określają, czy te zastąpienia są akceptowane.Jeżeli parametr nie jest określony, domyślnie jest NULL.

  • [ @subject= ] 'subject'
    Jest temat wiadomości e-mail.Typ jest przedmiotem nvarchar(255).Jeśli temat nie jest określony, domyślnie jestSQL Server komunikat".

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

  • [ @body_format= ] 'body_format'
    Jest formatem treści wiadomości.Parametr jest typu varchar(20), domyślna wartość NULL.Po określeniu nagłówków wychodzących wiadomości są zestaw , aby wskazać, że treść wiadomości ma określony format.Parametr może zawierać jedną z następujących wartości:

    • TEKST

    • HTML

    Domyślnie tekst.

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

    • Low

    • Normalny

    • High

    Wartością domyślną jest normalny.

  • [ @sensitivity= ] 'sensitivity'
    Jest czułość wiadomości.Parametr jest typu varchar(12).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 z listy musi być określona jako ścieżki bezwzględne.Lista załączników jest typu nvarchar(max).Domyślnie baza danych poczty ogranicza plików załączników 1 MB na plik.Aby uzyskać więcej informacji, zobacz Kreator konfiguracji poczty bazy danych.

  • [ @query= ] 'query'
    Jest wykonaćkwerendy.wyniki kwerendy można dołączyć 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 instrukcji.Należy zauważyć, że kwerenda jest wykonywana w osobnej sesja, więc lokalnych zmiennych w telefonicznej skryptu sp_send_dbmail nie są dostępne dla kwerendy.

  • [ @ execute_query_database= ] 'execute_query_database"
    Jest kontekst bazy danych, w ramach którego uruchamiana jest procedura składowana kwerendy.Parametr jest typu sysname, z domyślnymi bieżącej bazy danych.Parametr ten dotyczy wyłącznie jeśli @ kwerendy jest określony.

  • [ @ attach_query_result_as_file= ] attach_query_result_as_file
    Określa, czy zestaw wyników kwerendy są zwracane jako dołączonego pliku.attach_query_result_as_fileTyp jest bit, domyślna wartość 0.

    Gdy wartość jest równa 0, wyniki kwerendy są zawarte w treści wiadomości e-mail po zawartości @ organ parametru.Gdy wartość wynosi 1, wyniki są zwracane jako załącznik.Parametr ten dotyczy wyłącznie jeśli @ kwerendy jest określony.

  • [ @ query_attachment_filename= ] query_attachment_filename
    Określa nazwę pliku dla zestaw wyników zamocowania kwerendy.query_attachment_filenameTyp jest nvarchar(255), domyślna wartość NULL.Ten parametr jest ignorowany podczas attach_query_result jest równa 0.Gdy attach_query_result to 1, a ten parametr ma wartość NULL, poczta bazy danych tworzy dowolnego nazwa_pliku.

  • [ @ query_result_header= ] query_result_header
    Określa, czy wyniki kwerendy zawierają nagłówki kolumna .Wartość query_result_header jest typu bit.Gdy wartość wynosi 1, wyniki kwerendy zawierają nagłówki kolumna .Gdy wartość jest równa 0, wyniki kwerendy nie zawierają nagłówki kolumna .Domyślnie ten parametr 1.Parametr ten dotyczy wyłącznie jeśli @ kwerendy jest określony.

  • [ @ query_result_width =] query_result_width
    Jest szerokość linii w znaków dla formatowania wyniki kwerendy.query_result_width Jest typu int, z domyślnymi 256.Podana wartość musi być między 10 a 32767.Parametr ten dotyczy wyłącznie jeśli @ kwerendy jest określony.

  • [ @ query_result_separator= ] 'query_result_separator"
    Znak służy do oddzielania kolumn w wynikach kwerendy.Separator jest typu char(1).Domyślnie " " (miejsce).

  • [ @ exclude_query_output= ] exclude_query_output
    Określa, czy zwrócić wynik wykonanie kwerendy w wiadomości e-mail.exclude_query_output jest bit domyślna wartość 0.Kiedy ten parametr ma wartość 0, wykonanie sp_send_dbmail procedura składowana drukuje wiadomość zwrócona w wyniku wykonania kwerendy na konsoli.Kiedy ten parametr ma wartość 1, wykonanie sp_send_dbmail procedura składowana nie drukuje dowolny z komunikatów wykonanie kwerendy na konsoli.

  • [ @ append_query_error= ] append_query_error
    Określa, czy wysłać wiadomość e-mail, gdy zwraca błąd z kwerendy, określone w @ kwerendy argumentu.append_query_error jest bit, domyślna wartość 0.Jeśli ten parametr ma wartość 1, poczta bazy danych powoduje wysłanie 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ę kod zwrotny 1, wskazująca błąd.

  • [ @ query_no_truncate= ] query_no_truncate
    Określa, czy wykonać kwerendy z opcją, uniknąć obcięcia typy danych o zmiennej długości w dużych (varchar(max), nvarchar(max), varbinary(max), xml, text, ntext, imageoraz typy danych zdefiniowane przez użytkownika).Gdy zestaw, wyniki nie obejmują nagłówki kolumna kwerendy.query_no_truncate Jest wartością typu bit.Gdy ma wartość 0 lub nie został określony, kolumn w kwerendzie obciąć do 256 znaków.Gdy wartość wynosi 1, kolumny w kwerendzie nie są obcinane.Ten parametr jest domyślnie na wartość 0.

    Ostrzeżenie

    Gdy używana z dużą ilością danych, @query_no_truncate opcja zużywa dodatkowe zasoby i może zmniejszyć wydajność serwera.

  • [ @ query_result_no_padding ] @query_result_no_padding
    Typ jest bit.Wartość domyślna to 0.Jeśli zestaw na 1, wyniki kwerendy są nie wyściełane, prawdopodobnie zmniejszanie rozmiaru pliku.Jeśli możesz zestaw @ query_result_no_padding 1 i można zestaw parametr @ query_result_width parametr @ query_result_no_padding zastępuje parametr @ query_result_width.

    W tym przypadek nie występuje błąd.

    Jeśli zestaw query_result_no_padding @ 1 i zestaw parametr @ query_no_truncate, błąd zostanie zaokrąglona.

  • [ @mailitem_id= mailitem_id [ OUTPUT ]
    Parametr opcjonalny wyjściowy zwraca mailitem_id wiadomości.mailitem_id Jest typu int.

Wartości kodów powrotnych

Zwrócony kod 0 oznacza sukces.Każda wartość oznacza błąd.Kod błędu dla instrukcja nie powiodło się jest przechowywana w zmiennej @@ błąd.

Zestawy wyników

W przypadku powodzenia zwraca komunikat "Wiadomości w kolejce."

Uwagi

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

sysmail_stop_sp zatrzymuje poczty bazy danych przez zatrzymanie obiektów Service Broker , które używa programu zewnętrznego.sp_send_dbmail nadal akceptuje pocztę po zatrzymaniu poczty bazy danych za pomocą sysmail_stop_sp.Aby uruchomić pocztę bazy danych, użyj sysmail_start_sp.

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

sp_send_dbmail nie obsługuje wiadomości e-mail z żadnej zawartości.Aby wysłać wiadomość e-mail, należy określić co najmniej jeden z @ organ, @ kwerendy, @ file_attachments, lub @ przedmiotem.W przeciwnym razie sp_send_dbmail zwraca błąd.

Baza danych używa poczty Microsoft kontekstu zabezpieczeń systemu Windows bieżącego użytkownika do kontrolowania dostępu do plików.Dlatego użytkownicy, którzy są uwierzytelniani przez SQL Server uwierzytelniania nie można dołączać plików za pomocą @ file_attachments.System Windows nie zezwala na SQL Server o podanie poświadczenia z komputera zdalnego do innego komputera zdalnego.W związku z tym, poczta bazy danych nie można dołączać plików z udziału sieciowego, w przypadkach, gdy polecenie jest wykonywane z komputera innego niż komputer, SQL Server działa na.

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

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

Parametry @ adresatów, @ copy_recipients, i @ blind_copy_recipients jest rozdzielaną ś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 poczty bazy danych rozpoczyna się i zatwierdza transakcja niejawna.Podczas wykonywania sp_send_dbmail z istniejących transakcji bazy danych poczty opiera się na użytkownika do zatwierdzanie lub wycofać żadnych zmian.Transakcji wewnętrznych nie zostanie uruchomiony.

Uprawnienia

Uprawnienia wykonywania dla sp_send_dbmail domyślne do wszystkich członków DatabaseMailUser rola bazy danych w msdb bazy danych.Jednakże, kiedy użytkownik wysyłający 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 Dan Wilson przy użyciu adresu e-mail danw@Adventure-Works.com.Wiadomość zawiera temat Automated Success Message.Treść wiadomości zawiera następujące zdania 'The stored procedure finished successfully'.

EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'AdventureWorks2008R2 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 Dan Wilson przy użyciu adresu e-mail danw@Adventure-Works.com.Wiadomość zawiera temat Work Order Counti wykonuje kwerendę, która zawiera liczbę zamówień z DueDate mniej niż dwa dni po dniu 30 kwietnia 2004 r.Poczta bazy danych dołącza wyniki jako plik tekstowy.

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

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

W tym przykładzie wysyła wiadomość e-mail Dan Wilson przy użyciu adresu e-mail danw@Adventure-Works.com.Wiadomość zawiera temat Work Order Listi zawiera dokument HTML , który zawiera zleceń roboczych z DueDate mniej niż dwa dni po dniu 30 kwietnia 2004 r.Poczta bazy danych wysyła wiadomość 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 AdventureWorks2008R2.Production.WorkOrder as wo
              JOIN AdventureWorks2008R2.Production.Product AS p
              ON wo.ProductID = p.ProductID
              WHERE DueDate > '2006-04-30'
                AND DATEDIFF(dd, '2006-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' ;