Aracılığıyla paylaş


sp_send_dbmail (Transact-SQL)

E-posta iletisine belirtilen alıcılara gönderir.İleti, bir sorgu sonuç kümesi, dosya eklerini veya her ikisini de içerebilir.Posta başarıyla veritabanı posta sıraya yerleştirildiğinde sp_send_dbmail verir mailitem_id ileti.Bu saklı yordam bulunduğu msdb veritabanı.

Konu bağlantısı simgesiTransact-SQL sözdizimi kuralları

Sözdizimi

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 ]

Bağımsız değişkenler

  • [ @profile_name= ] 'profile_name'
    Gelen iletiyi göndermek için profilinin adıdır.profile_name Türü olan sysname, varsayılan değer null.profile_name Olması gereken adını bir varolan veritabanı posta profili.Hayır, profile_name belirlendiğinde, sp_send_dbmail geçerli kullanıcı için varsayılan özel profili kullanır.Kullanıcı varsayılan özel profil yoksa sp_send_dbmail için varsayılan genel profil kullanır msdb veritabanı.Kullanıcının varsayılan özel bir profil yok ve veritabanı için varsayılan genel profil varsa @ Profil_adı belirtilmelidir.

  • [ @recipients= ] 'recipients'
    İleti göndermek için e-posta adreslerini noktalı virgülle ayrılmış bir listesi verilmiştir.Alıcılar listesi türüdür varchar(max).Bu parametre isteğe bağlıdır, ancak en az bir @ Alıcılar, @ copy_recipients, veya @ blind_copy_recipients belirtilmesi gerekir veya sp_send_dbmail bir hata döndürür.

  • [ @ copy_recipients= ] 'copy_recipients'
    Noktalı virgülle ayrılmış listesini e-posta iletisine karbon kopya adresleri olur.Kopya alıcılar listesi türüdür varchar(max).Bu parametre isteğe bağlıdır, ancak en az bir @ Alıcılar, @ copy_recipients, veya @ blind_copy_recipients belirtilmesi gerekir veya sp_send_dbmail bir hata döndürür.

  • [ @ blind_copy_recipients= ] 'blind_copy_recipients'
    İletiyi gizli için noktalı virgülle ayrılmış listesini e-posta adresleri olur.Görünmeyen kopya alıcılar listesi türüdür varchar(max).Bu parametre isteğe bağlıdır, ancak en az bir @ Alıcılar, @ copy_recipients, veya @ blind_copy_recipients belirtilmesi gerekir veya sp_send_dbmail bir hata döndürür.

  • [ @from_address= ] 'from_address'
    Değeri 'Kimden 'adresi e-posta ileti.Bu, posta profili ayarları geçersiz kılmak için kullanılan isteğe bağlı bir parametredir.Bu parametre türü olan varchar(MAX).SMTP güvenlik ayarları, bu geçersiz kılmalar kabul edilip edilmediğini belirler.Hiçbir parametre belirtilmezse, varsayılan değer null olur.

  • [ @reply_to= ] 'reply_to'
    Değeri 'Yanıtla adresi' e-posta ileti.Tek bir e-posta adresi geçerli bir değer kabul eder.Bu, posta profili ayarları geçersiz kılmak için kullanılan isteğe bağlı bir parametredir.Bu parametre türü olan varchar(MAX).SMTP güvenlik ayarları, bu geçersiz kılmalar kabul edilip edilmediğini belirler.Hiçbir parametre belirtilmezse, varsayılan değer null olur.

  • [ @subject= ] 'subject'
    E-posta iletisi konusudur.Konu türüdür nvarchar(255).Hiçbir konu belirtilirse,SQL Server Message' varsayılandır.

  • [ @body= ] 'body'
    E-posta iletisinin gövdesi olur.İleti gövdesi türüdür nvarchar(max), varsayılan değer null.

  • [ @body_format= ] 'body_format'
    İleti gövdesinin biçimidir.Parametre türü: varchar(20), varsayılan değer null.kümeParametre aşağıdaki değerlerden birini içerebilir:

    • TEXT

    • HTML

    Varsayılan olarak metin.

  • [ @importance= ] 'importance'
    İletinin önemini olur.Parametre türü: varchar(6).Parametre aşağıdaki değerlerden birini içerebilir:

    • Low

    • Normal

    • High

    Varsayılan olarak Normal.

  • [ @sensitivity= ] 'sensitivity'
    İletinin duyarlılığı olur.Parametre türü: varchar(12).Parametre aşağıdaki değerlerden birini içerebilir:

    • Normal

    • Kişisel

    • Özel

    • Gizli

    Varsayılan olarak Normal.

  • [ @ file_attachments= ] 'file_attachments'
    E-posta iletisine eklemek için dosya adlarını noktalı virgülle ayrılmış bir listesi verilmiştir.Listedeki dosyalar mutlak yollar olarak belirtilmelidir.Eklerin listesi türüdür nvarchar(max).Varsayılan olarak, veritabanı posta 1 mb dosya ekleri dosya başına sınırlar.Daha fazla bilgi için, bkz. Veritabanı posta Yapılandırma Sihirbazı.

  • [ @query= ] 'query'
    yürütmekbir sorgudur.Sorgu sonuçlar ekli dosya veya e-posta iletisinin gövdesinde yer.Sorgu türü olan nvarchar(max)ve herhangi bir geçerli Transact-SQL ifadeleri.Ayrı oturum, bu nedenle yerel değişkenleri komut dosyası arama sorgusu yürütülür Not sp_send_dbmail sorgu için kullanılabilir değil.

  • [ @ execute_query_database= ] 'execute_query_database'
    İçinde saklı yordam sorguyu çalıştırır veritabanı bağlamdır.Parametre türü: sysname, varsayılan değer geçerli veritabanına al.Bu parametre yalnızca geçerlidir, @ sorgu belirtilir.

  • [ @ attach_query_result_as_file= ] attach_query_result_as_file
    sonuç kümesi , sorgu eklenmiş dosya döndürülen olup olmadığını belirtir.attach_query_result_as_filetür bit, varsayılan olarak 0.

    Değer 0 olduğunda, sorgu sonuçlar dahil edilir e-posta iletisinin gövdesinde sonra içeriğini @ gövde parametresi.Değer 1 olduğunda, ek olarak sonuçlar döndürülür.Bu parametre yalnızca geçerlidir, @ sorgu belirtilir.

  • [ @ query_attachment_filename= ] query_attachment_filename
    sonuç kümesi sorgu ekin için kullanılacak dosya adını belirtir.query_attachment_filenametür nvarchar(255), varsayılan değer null.Bu parametre dikkate alınmaz, attach_query_result 0.Zaman attach_query_result 1'dir ve bu parametresi null, Database Mail oluşturur rasgele bir dosya adı.

  • [ @ query_result_header= ] query_result_header
    Sorgu sonuçlar sütun başlıkları dahil olup olmadığını belirtir.Query_result_header değer türüdür bit.Değer 1 olduğunda, sorgu sonuçlar sütun başlıkları içerir.Değer 0 olduğunda, sorgu sonuçlar ekleme sütun başlıkları.Bu parametre için varsayılan 1.Bu parametre yalnızca geçerlidir, @ sorgu belirtilir.

  • [ @ query_result_width =] query_result_width
    Sorgu sonuçlar biçimlendirmek için kullanılacak karakter, çizgi kalınlığı olduğu.query_result_width Türü olan int, varsayılan 256.Sağlanan değer, 10 ile 32767 arasında olmalıdır.Bu parametre yalnızca geçerlidir, @ sorgu belirtilir.

  • [ @ query_result_separator= ] 'query_result_separator'
    Karakter, sorgu çıktısında sütunları ayırmak için kullanılır.Ayırıcı türüdür char(1).Varsayılan olarak ' ' (boşluk).

  • [ @ exclude_query_output= ] exclude_query_output
    E-posta iletisinde sorgu yürütme çıktı dönmek etkinleştirilip etkinleştirilmeyeceğini belirtir.exclude_query_output , varsayılan değeri 0 bit.Bu parametre 0, yürütülmesini olduğunda sp_send_dbmail saklı yordam konsolda sorgu yürütmesi sonucu olarak döndürülen iletiyi yazdırır.Bu parametre 1, yürütülmesini olduğunda sp_send_dbmail saklı yordam yazdırma sorgu yürütme iletilerini konsolda.

  • [ @ append_query_error= ] append_query_error
    Belirtilen sorgu hata verir, e-posta gönderilip gönderilmeyeceğini belirtir @ sorgu bağımsız değişkeni.append_query_error olan bit, varsayılan olarak 0.Bu parametre 1 olduğunda, Database Mail e-posta iletisi gönderir ve e-posta iletisinin gövdesinde sorgu hata iletisini içerir.Bu parametre 0 olduğunda, Database Mail e-posta ileti göndermez ve sp_send_dbmail başarısız olduğunu dönüş koduyla 1, sona erer.

  • [ @ query_no_truncate= ] query_no_truncate
    Sorgu seçeneğiyle yürütmek , büyük değişken uzunluklu veri türleri kesilmesi kaçınır olup olmadığını belirtir (varchar(max), nvarchar(max), varbinary(max), xml, text, ntext, imageve kullanıcı tanımlı veri türleri).Zaman küme, sorgu sonuçlar sütun üstbilgilerini içermiyor.query_no_truncate Değerdir türü bit.Değer 0 veya belirtilmemiş olduğunda, sütunların sorgudaki 256 karakterle kesecek.Değer 1 olduğunda, sütunların sorgudaki kesilmiş değil.Bu parametrenin varsayılan olarak 0 olur.

    Not

    Veri, büyük miktarlarda kullanıldığında @query_no_truncate seçeneği ek kaynaklarını tüketir ve sunucu performansını yavaşlatır.

  • [ @ query_result_no_padding ] @query_result_no_padding
    Türü bit.Varsayılan değer 0'dir.Ne zaman, küme 1, sorgu sonuçlar değil azsa, büyük olasılıkla dosya boyutunu küçültme.@ Query_result_width parametresi, küme @ query_result_no_padding 1 ve küme @ query_result_width parametresi @ query_result_no_padding parametresi için geçersiz kılar.

    Bu durum da hata oluşmaz.

    @ Query_result_no_padding 1 küme ve küme @ query_no_truncate parametresi, bir hata ortaya çıkar.

  • [ @mailitem_id= mailitem_id [ OUTPUT ]
    İsteğe bağlı çıkış parametresi mailitem_id ileti.mailitem_id Türü olan int.

Dönüş Kodu Değerleri

Bir dönüş kodu 0 Başarı anlamına gelir.Başka bir değer başarısızlığı anlamına gelir.Bir deyim başarısız oldu Hata kodu @@ error değişkende saklanır.

Sonuç Kümeleri

Başarı, "Posta sıraya." iletisini döndürür.

Açıklamalar

Veritabanı posta Yapılandırma Sihirbazı'nı kullanarak veritabanı posta kullanılmadan önce etkinleştirilmelidir veya sp_configure.

sysmail_stop_sp veritabanı posta dış program kullanan Hizmet Aracısı nesneleri durdurulmasıyla durdurulur.sp_send_dbmail Database Mail'i kullanarak durdurulduğunda hala posta kabul sysmail_stop_sp.Veritabanı posta başlatmak için sysmail_start_sp.

Zaman @ Profil belirtilmezse, sp_send_dbmail bir varsayılan profili kullanır.Database Mail, e-posta iletisi gönderen kullanıcı özel bir varsayılan profil varsa, bu profili kullanır.Kullanıcının varsayılan özel profil, varsa sp_send_dbmail varsayılan genel profil kullanır.Kullanıcı için varsayılan özel profil ve hiçbir varsayılan genel profil ise sp_send_dbmail bir hata döndürür.

sp_send_dbmail hiç bir içeriğe sahip e-posta iletileri desteklemez.Bir e-posta iletisi göndermek için en az birini belirtmeniz gerekir @ gövde, @ sorgu, @ file_attachments, veya @ Konu.Aksi takdirde, sp_send_dbmail bir hata döndürür.

Veritabanı posta kullanımları Microsoft Geçerli kullanıcının erişimi denetlemek için Windows güvenlik içeriğinidosyaları.Bu nedenle, sahip kimliği doğrulanmış kullanıcılar SQL Server kimlik doğrulaması kullanarak dosyaları eklemek @ file_attachments.Windows izin vermez SQL Server sağlamaya yönelik kimlik bilgileri uzak bir bilgisayardan başka bir uzak bilgisayar.Bu nedenle, Database Mail durumlarda burada komut çalıştırıldığında bilgisayar dışındaki bir bilgisayardan ağ paylaşımından dosya eklemek mümkün olmayabilir, SQL Server üzerinde çalıştığı.

Her iki @ sorgu ve @ file_attachments belirtilir ve dosya bulunamıyor, sorgu hala yürütülür ancak e-posta gönderilemedi.

Bir sorgu belirtilirse, sonuç kümesi satır içi metin olarak biçimlendirilir.Sonuç ikili veri, onaltılık biçimde gönderilir.

Parametreleri @ Alıcılar, @ copy_recipients, ve @ blind_copy_recipients olan e-posta adreslerini noktalı virgülle ayrılmış listesi.Bu parametrelerden en az birinin sağlanması gerekir, ya da sp_send_dbmail bir hata döndürür.

Yürütürken sp_send_dbmail bir işlem bağlamı olmadan, Database Mail'i başlatır ve bir örtük işlemtamamlar.Yürütürken sp_send_dbmail karşı varolan bir hareket içinde veritabanı posta kullanıcıya yürütme veya geri almak değişiklikleri dayanır.Bir iç işlem başlatılmaz.

İzinler

Yürütme izinleri için sp_send_dbmail tüm üyeleri için varsayılan DatabaseMailUser veritabanı rolü msdb veritabanı.Ancak, ne zaman ileti gönderen kullanıcı isteği profilini kullanmak için izni yok sp_send_dbmail hata verir ve ileti göndermez.

Örnekler

A.Bir e-posta iletisi gönderme

Bu örnekte e-posta adresini kullanarak e-posta iletisine Dan Wilson gönderir danw@Adventure-Works.com.İletinin konu olan Automated Success Message.İletisinin gövdesi aşağıdaki cümle yer almaktadır '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.Sorgu sonuçlar içeren bir e-posta iletisi gönderme

Bu örnekte e-posta adresini kullanarak e-posta iletisine Dan Wilson gönderir danw@Adventure-Works.com.İletinin konu olan Work Order Countve çalışma siparişlerin sayısını gösteren bir sorgu yürütür bir DueDate iki günden az bir süre sonra 30 Nisan 2004.Veritabanı posta sonuç metin dosyası olarak ekler.

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.HTML e-posta iletisi gönderme

Bu örnekte e-posta adresini kullanarak e-posta iletisine Dan Wilson gönderir danw@Adventure-Works.com.İletinin konu olan Work Order Listve iş siparişleri gösteren bir HTML belgede bir DueDate iki günden az bir süre sonra 30 Nisan 2004.Database Mail iletiyi HTML biçiminde gönderir.

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' ;