sp_processmail (Transact-SQL)

Uses extended stored procedures (xp_findnextmsg, xp_readmail, and xp_deletemail) to process incoming mail messages from the inbox for Microsoft SQL Server.Każda wiadomość powinien zawierać pojedynczą kwerendę, w treści wiadomości.W tej procedurze wykorzystano xp_sendmail rozszerzona procedura składowana zwraca zestaw wyników jako załącznik do nadawcy wiadomości.

Important noteImportant Note:

Należy unikać stosowania tej procedury.The sp_processmail procedure processes information sent to you by mail from unknown sources and can be used to introduce malicious code into your environment.Należy wykonać dużą ostrożnością do sprawdzania poprawności kodu przed jego wykonaniem.Ta procedura jest dostarczany w celu zapewnienia zgodności z poprzednimi wersjami, ale nie jest zainstalowana, dopóki nie zostanie włączona poczta SQL.

Uwaga

This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.

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

sp_processmail [ [ @subject = ] 'subject' ] 
     [ , [ @filetype = ] 'filetype' ] 
     [ , [ @separator = ] 'separator' ] 
     [ , [ @set_user = ] 'user' ] 
     [ , [ @dbuse = ] 'dbname' ]

Argumenty

  • [ @subject = ] 'subject'
    Is the subject line of mail messages to interpret as query mails for SQL Server to process.subject is varchar(255), with a default of NULL.Po określeniu sp_processmail przetwarza tylko te wiadomości, które mają tego tematu.Domyślnie SQL Server przetwarza wszystkie wiadomości tak, jakby ich treść wiadomości zawiera kwerendy.

  • [ @filetype = ] 'filetype'
    Is the file extension to be used when the query result set is sent back to the message sender as an attachment.filetype is varchar(3), with a default of "'txt"'.

  • [ @separator = ] 'separator'
    Czy separator kolumna (pole terminator) dla każdej kolumna zestaw wyników.This information is passed to the xp_sendmail extended stored procedure to return the result set to the message sender.separator is varchar(3), with a default of 'tab', which is a special case for the tab character to be used between columns.

  • [ @set_user = ] 'user'
    Is the security context in which the query should be run.user is varchar(132), with a default of guest.

  • [ @dbuse = ] 'dbname'
    Is the database context in which the query should be run.dbname is varchar(132), with a default of master.

Wartości kodów powrotnych

0 (sukces) lub 1 (brak)

Zestawy wyników

None

Remarks

Incoming e-mail is expected to have a single valid SQL Server query as the message text.sp_processmail only handles unread messages.Wyniki kwerendy są zwracane do nadawcy wiadomości i kopiowane do wszystkich użytkowników wiadomości e-mail na CC: Lista wiadomości oryginalnej. Po przetworzeniu wiadomości są usuwane ze skrzynki odbiorczej.Jeśli wiadomość e-mail wysyłana jest często na serwerze sp_processmail powinien być uruchamiany często.Aby zestaw zapasowej przetwarzania zwykłe wiadomości e-mail, można użyć SQL Server Agent planowania sp_processmail zadanie.To przetwarzania poczty z określoną częstotliwością i zapisuje komunikat informacyjny z liczbą kwerendy w historia zadanie.

Wyniki są wysyłane jako dołączony plik.Pełnej nazwy pliku wysyłane składa się z „ SQL", po której następuje ciąg losowy o numery i rozszerzenie typu pliku, na przykład Sql356.txt.

Important noteImportant Note:

Aby dołączyć odpowiednie ikony do wiadomości pocztowej, upewnij się, że typ pliku skojarzony jest prawidłowo.Aby utworzyć skojarzenie pliku, kliknij dwukrotnie W folderze Mój komputer na pulpicie, a następnie wybierz pozycję Element Opcje folderów from the Narzędzia menu.Na Typy plików karcie w Element Opcje folderów w oknie dialogowym należy określić aplikację do otwarcia pliku.

Różne sp_processmail zadań może być zestaw dla kwerendy w różnych bazach danych.Na przykład, można przyjąć Konwencji, który wykonuje kwerendę w celu AdventureWorksBaza danych musi mieć tematu „ SQL:AdventureWorks. „ Then, you could run sp_processmail specifying a subject ofSQL:AdventureWorks and a dbname of AdventureWorks.Kwerendy bazy danych i grupy mogą mieć inne struktury formatowania.For example, distribution tasks can have a subject of SQL:distribution and a dbname ofdistribution.Dowolny z tych mogą być zaplanowane zadania, dla których SQL Server Agent.

The sp_processmail systemowa procedura składowana can also be customized in many ways by retrieving the text of the procedure with the sp_helptext systemowa procedura składowana, modifying the Transact-SQL code, and creating a new procedure with customized behavior.Możliwość zmiany obejmują:

  • Przetwarza tylko niektórych typów niestandardowy komunikat, za pomocą @ type parametrxp_findnextmsg rozszerzona procedura składowana.

  • Oznaczanie wiadomości jako read ale nie powoduje usunięcia wiadomości po ich przetworzeniu (wykonać xp_readmail po raz drugi z peek zestaw do false).

  • Wyślij wyniki kwerendy w treści wiadomości e-mail przez wywołanie xp_sendmail with attach_result zestaw do falsei usuwanie attachments parametr.

  • Ustaw kontekst zabezpieczeń, aby uruchomić kwerendę w kontekście użytkownika, w zależności od nadawcy wiadomości.If the e-mail user names are the same as your SQL Server user names, this is as simple as changing the call to xp_sendmail to use set_user = @originator.Jeśli nazwy użytkownika poczty nie są prawidłowe SQL Server Użytkownik nazwy (na przykład, jeżeli zawierają spacje osadzone), może zrobić podstawiania tabela wyszukiwania lub znak, w celu uzyskania odpowiednich SQL Server Nazwa użytkownika, aby przekazać do xp_sendmail.

Uprawnienia

Tylko członkowie sysadmin stała rola serwera możliwość wykonać tej procedury.

Przykłady

W poniższym przykładzie przetwarza wszystkie wiadomości w Skrzynce odbiorczej jako kwerendy w AdventureWorks Baza danych. Zestawy wyników są zwracane do klient w CSV format (wartości oddzielonych przecinkami).

EXEC sp_processmail
    @filetype = 'CSV'
    ,@separator = ','
    ,@dbuse = 'AdventureWorks';