Udostępnij za pośrednictwem


How to: Convert Stored Procedures from SQL Mail to Database Mail (Transact-SQL)

Poczta bazy danych pozwala wysyłać wiadomości e-mail od SQL Server. Za pomocą procedura przechowywana sp_send_dbmail do wysyłania wiadomości e-mail.Argumenty, które wymaga tej procedury są podobne do argumenty xp_sendmail.W rezultacie konwertowania procedury, która korzysta z xp_sendmail to use sp_send_dbmail jest prosta.

Najważniejszy parametr dodatkowe dla sp_send_dbmail jest profilu opcjonalne poczty, który będzie używany do wysyłania wiadomości.Tworzenie profilu poczty bazy danych przy użyciu Database Mail Configuration Wizard, lub procedur przechowywanych wiadomości bazy danych. Tylko msdb bazy danych może być bazą danych hosta poczty.

Aby przekonwertować procedura przechowywana z poczty programu SQL do bazy danych programu Poczta

  1. Jeśli nie jest jeszcze włączony, należy włączyć poczty bazy danych.Aby włączyć poczty bazy danych, należy użyć Database Mail Configuration Wizard.

  2. Tworzenie profilu poczty bazy danych, jeśli nie masz jeszcze profilu, który został utworzony.Aby uzyskać więcej informacji na temat tworzenia profilu poczty bazy danych zobacz How to: Create Database Mail Private Profiles (Transact-SQL).

  3. Zastąpić wywołanie xp_sendmail z wywołaniem sp_send_dbmail.Argumenty z mapowania xp_sendmail to sp_send_dbmail , jak pokazano w poniższej tabela.

xp_sendmail argumentu

sp_send_dbmail argumentu

@ adresatów

@ adresatów

@ wiadomości

@ treści

@ kwerendy

@ kwerendy

@ załączników

@ file_attachments

@ copy_recipients

@ copy_recipients

@ blind_copy_recipients

@ blind_copy_recipients

@ tematu

@ tematu

@ type

NIE DOTYCZY

@ attach_results

@ attach_query_result_as_file

@ no_output

@ exclude_query_output

@ no_header

@ query_result_header

@ szerokość

@ query_result_width

@ separatora

@ query_result_separator

@ echo_error

NIE DOTYCZY

@ set_user

NIE DOTYCZY

@ dbuse

@ execute_query_database

  1. W przypadku aktualizacji odpowiedniej procedury, należy wziąć pod uwagę następujące różnice:

    • Nie wpisywania wiadomości MAPI jest dostępna.Ponieważ poczta bazy danych nie używa rozszerzonego interfejsu MAPI, procedura przechowywana, nie zestaw typ komunikatu.

    • Jeśli @ kwerendy parametr zostanie podana, wszystkie błędy z kwerendy są zwracane do sesja, o nazwie sp_send_dbmail.

    • Jeśli @ kwerendy parametr jest dostarczany, to kwerenda jest wykonywana jako bieżący użytkownik.Jednak kwerenda może zawierać żadnych prawidłowych Transact-SQL, łącznie z instrukcji wykonać AS.

    • Poczta baza danych obsługuje następujące opcje, które nie są obsługiwane w programie SQL poczta:

    sp_send_dbmail argumentu

    Description

    @ nazwa_profilu

    Określa profilu poczty, który będzie używany dla wiadomości.Poczta baza danych obsługuje wiele profilów i wielu kont dla każdego profilu zapewnić niezawodność i skalowalność.The @profile may be omitted if there is a default profile for mail host database or for the user calling sp_send_dbmail.

    @ body_format

    Określa format wiadomości e-mail, tekst lub HTML.

    @ znaczenie

    Określa znaczenie dla wiadomości e-mail.

    czułość @

    Określa charakter wiadomości e-mail.

    @ query_attachment_filename

    Określa nazwę pliku, należy użyć, gdy wyniki kwerendy są dołączone jako plik.If you use the xp_sendmail @query parameter with @attach_results = TRUE, the @attachments parameter can specify only one file to attach to the mail message.sp_send_dbmail has both @file_attachments and

    @ query_attachment_filename.

Example

W poniższym przykładzie użyto SQL mail do wysyłania wiadomości do danw@Adventure-Works.com.

EXEC master.dbo.xp_sendmail 
    @recipients=N'danw@Adventure-Works.com',
    @message=N'The master database is full.' ;

W przykładzie poniżej używa poczty bazy danych i domyślnego profilu dla bieżącego użytkownika do wysyłania tej samej wiadomości:

EXEC msdb.dbo.sp_send_dbmail
    @recipients=N'danw@Adventure-Works.com',
    @body=N'The master database is full.' ;

Należy zauważyć, że procedura działa w msdb bazy danych.