Aracılığıyla paylaş


sp_send_dbmail (Transact-SQL)

Bir e-posta iletisi, belirtilen alıcılara gönderir.Ileti, bir sorgu sonuç kümesi, dosya eklerini veya her ikisini de içerebilir.Ne zaman veritabanı posta kuyruğunda, posta başarıyla yerleştirilir sp_send_dbmail verir...mailitem_id iletinin.Bu saklı yordam bulunduğu msdb veritabanıdır.

Topic link iconTransact-SQL sözdizimi kuralları

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 ]

Bağımsız değişkenler

  • [ @profile_name= ] 'profile_name'
    Gelen iletiyi göndermek için profil adıdır.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.Yok, profile_name , belirtilen sp_send_dbmail varsayılan özel profil, geçerli kullanıcı için kullanır.Kullanıcı özel varsayılan profil yoksa sp_send_dbmail için varsayılan genel profil kullanır.msdb veritabanıdır.Kullanıcı özel bir varsayılan profil olan ve veritabanı için varsayılan ortak profil yok. @ profile_name belirtilmeli.

  • [ @recipients= ] 'recipients'
    Iletiyi göndermek için e-posta adreslerini noktalı virgülle sınırlanmış listesini belirtilir.Alıcı listesi türüdür varchar(max). Bu parametre seçime bağlıdır; ancak en az biri @ Alıcılar, @ copy_recipients, or @ blind_copy_recipients belirtilmeli veya sp_send_dbmail hata verir.

  • [ @copy_recipients= ] 'copy_recipients'
    E-posta, noktalı virgülle sınırlanmış listesini karbon kopya için iletiye adresleri belirtilir.Kopya alıcılar listesi türüdür varchar(max). Bu parametre seçime bağlıdır; ancak en az biri @ Alıcılar, @ copy_recipients, or @ blind_copy_recipients belirtilmeli veya sp_send_dbmail hata verir.

  • [ @blind_copy_recipients= ] 'blind_copy_recipients'
    E-posta, noktalı virgülle sınırlanmış listesini gizli için iletiye adresleri belirtilir.Kör kopya alıcılar listesi türüdür varchar(max). Bu parametre seçime bağlıdır; ancak en az biri @ Alıcılar, @ copy_recipients, or @ blind_copy_recipients belirtilmeli veya sp_send_dbmail hata verir.

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

  • [ @reply_to= ] 'reply_to'
    'Yanıt adresi' e-posta iletisinin değeridir.Bu, posta profili ayarlarını geçersiz kılmak için kullanılan isteğe bağlı bir parametredir.Bu parametre, türüdür varchar(MAX). SMTP güvenlik ayarları, bu geçersiz kabul edilip edilmediğini belirler.Parametre belirtilmezse, varsayılan değer NULL olur.

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

  • [ @body= ] 'body'
    E-posta iletisinin gövdesi olarak belirtilir.Ileti gövdesi türüdür nvarchar(max), varsayılan değeri NULL ile.

  • [ @body_format= ] 'body_format'
    Ileti gövdesinin biçimidir.Tür parametresi varchar(20), varsayılan değeri NULL ile. Belirtildiğinde, giden iletinin üstbilgiler iletinin Gövde için belirtilen biçim olduğunu belirtmek için küme.Parametre aşağıdaki değerlerden birini içerebilir:

    • TEXT

    • HTML

    Varsayılan METIN.

  • [ @importance= ] 'importance'
    Iletinin önem belirtilir.Tür parametresi varchar(6). Parametre aşağıdaki değerlerden birini içerebilir:

    • Low

    • Normal

    • High

    Varsayılan olarak normal.

  • [ @sensitivity= ] 'sensitivity'
    Iletinin duyarlılığını belirtilir.Tür parametresi varchar(12). Parametre aşağıdaki değerlerden birini içerebilir:

    • Normal

    • Personal

    • Özel

    • Gizli

    Varsayılan olarak normal.

  • [ @file_attachments= ] 'file_attachments'
    E-posta iletisine eklemek için dosya adlarını noktalı virgülle sınırlanmış listesini belirtilir.Dosya listesinde, mutlak bir yol belirtilmelidir.Ekler listesi türüdür nvarchar(max). Varsayılan olarak, Database Mail'i her dosya için 1 MB olan dosya eklerini sınırlar.Daha fazla bilgi için bkz:Veritabanı Adres Yapılandırma Sihirbazı.

  • [ @query= ] 'query'
    Bir sorgu yürütmek için belirtilir.Sorgu sonuçlarını bir dosya olarak iliştirilen veya e-posta iletisinin gövdesinde yer.Sorgu türüdür nvarchar(max)ve herhangi bir geçerli içerebilir Transact-SQL ifadeler. Sorgu ayrı bir oturumda, böylece yerel değişkenleri komut dosyası arama gerçekleştirildiğinde unutmayın. sp_send_dbmail sorguya kullanılamaz.

  • [ @execute_query_database= ] 'execute_query_database'
    saklı yordam sorgu çalışır, içinde veritabanı içerik belirtilir.Tür parametresi sysname, geçerli veritabanının varsayılan. Bu parametre yalnızca geçerlidir, @ Sorgu belirtildi.

  • [ @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.

    Değer, 0, sorguyu olduğunda sonuçlar e-posta iletisinin gövdesinde sonra içeriği içerdiği @ Gövde parametresi.Değer 1 olduğunda, sonuçlar ek olarak gönderilir.Bu parametre yalnızca geçerlidir, @ Sorgu belirtildi.

  • [ @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.Bu parametre yoksayılır, attach_query_result 0'dır. Ne zaman attach_query_result 1, bu parametre NULL, veritabanı posta rasgele bir dosya adı oluşturur.

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

  • [ @ query_result_width = ] query_result_width
    Biçimlendirmek için kullanılacak karakter, satır genişliğe sonuçlar sorgu.The query_result_width is of type int, with a default of 256.Sağlanan değer, 10 ile 32767 arasında olmalıdır.Bu parametre yalnızca geçerlidir, @ Sorgu belirtildi.

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

  • [ @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.Bu parametreyi 0 (yürütülmesini olduğunda sp_send_dbmail yordamı yazdırır, iletinin konsol üzerindeki sorgu yürütme sonucu olarak döndürülen depolanır.Bu parametre 1, yürütülmesini olduğunda sp_send_dbmail saklı yordam sorgu yürütme iletilerini konsol üzerindeki yazdırılamıyor.

  • [ @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.Bu parametre 1 olduğunda, veritabanı mektup e-posta iletisi gönderir ve sorgu hata iletisi e-posta iletisinin gövdesinde içerir.Bu parametre 0 olduğunda, veritabanı mektup e-posta iletisinin göndermez ve sp_send_dbmail başarısızlığı belirten dönüş koduyla 1, sona erdirir.

  • [ @query_no_truncate= ] query_no_truncate
    Sorgu seçeneğiyle büyük değişken uzunluklu veri türü ((ingilizce), kesme önler etkinleştirilip etkinleştirilmeyeceğini belirtir.varchar(max), nvarchar(max), varbinary(max), xml, text, ntext, imageve kullanıcı tanımlı veri türleri). Ayarlandığında, sorgu sonuçlarını sütun başlıklarını içermez.The query_no_truncate value is of type bit.Değer 0 veya belirtilmemiş ise, sütunların sorgudaki 256 karakterle kesecek.Değer 1 olduğunda, sütunların sorgudaki kesiliyor.Bu parametreyi 0 olarak varsayılan.

    Not

    Büyük miktarda veri ile kullanıldığında @query_no_truncate seçeneği ek kaynaklarını tüketir ve sunucu performansını düşürebilir.

  • [ @mailitem_id= ] mailitem_id [ OUTPUT ]
    Isteğe bağlı bir çıkış parametresi mailitem_id ileti. The mailitem_id is of type int.

Dönüş Kodu Değerleri

Bir dönüş kodu 0 başarılı anlamına gelir.Başka bir değer, başarısızlık anlamına gelir.Ifadenin başarısız oldu hata kodunu @@ ERRROR değişken olarak depolanır.

Sonuç Kümeleri

Başarı, "Posta sıraya." iletisi verir...

Remarks

Kullanılmadan önce veritabanı adres veritabanı Adres Yapılandırma Sihirbazı'nı kullanarak etkinleştirilmesi gereken veya 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.Veritabanı posta başlatmak için kullanın. sysmail_start_sp.

Ne zaman @ profili belirtilen sp_send_dbmail varsayılan bir profil kullanır.Veritabanı posta, e-posta iletisi göndererek bir kullanıcının özel bir varsayılan profil varsa, bu profil kullanır.Kullanıcının varsayılan özel profil, varsa sp_send_dbmail varsayılan ortak profil kullanır.Varsa kullanıcı özel varsayılan profil ve hiçbir varsayılan genel profil sp_send_dbmail hata verir.

sp_send_dbmail hiçbir içerik bulunan e-posta iletilerini desteklemiyor.E-posta iletisi göndermek için , en az birini belirtmeniz gerekir @ Gövde, @ Sorgu, @ file_attachments, or @ Konu.Aksi halde, sp_send_dbmail hata verir.

Posta kullanan veritabanı Microsoft Dosya erişimi denetlemek için geçerli kullanıcının güvenlik bağlamında Windows. Bu nedenle, sahip kimliği doğrulanmış kullanıcılar SQL Server Kimlik doğrulaması kullanarak dosya eklenemiyor @ file_attachments.Windows izin vermiyor SQL Server Uzak bir bilgisayardan başka bir uzak bilgisayar kimlik bilgileri bilgilerini sağlamak üzere, . Bu nedenle, veritabanı posta bulunduğu bilgisayar dışındaki bir bilgisayardan komut çalıştırıldığı durumlarda, bir ağ paylaşımından dosya iliştirmek için olmayabilir, SQL Server çalışır.

Her iki, @ Sorgu and @ file_attachments belirtilirse ve bu dosya bulunamıyor, sorgu hala çalışır, ancak e-posta gönderilmez.

Sonuç kümesi, sorguda belirtilen, satır içi metin olarak biçimlendirilir.Sonuç ikili veri, onaltılık biçimde gönderilir.

Parametreleri @ Alıcılar, @ copy_recipients, and @ blind_copy_recipients e-posta adreslerini noktalı virgülle sınırlanmış listesini alır.Bu parametre en az bir sağlanmalıdır, veya sp_send_dbmail hata verir.

Yürütürken sp_send_dbmail veritabanı posta gibi bir işlem bağlamı olmadan başlatır ve örtülü bir hareketi tamamlar.Yürütürken sp_send_dbmail Varolan bir işlem, veritabanı posta içinde gelen tamamlanmaya veya değişiklikleri geri almak için kullanıcı dayanır. Bir iç işlem başlatılmaz.

İzinler

yürütmek izinleri için sp_send_dbmail Tüm üyelere varsayılanDatabaseMailUser veritabanı rolümsdb veritabanıdır.Ancak, iletinin Gönderen kullanıcı isteği, profili kullanma izni yok sp_send_dbmail hata verir ve iletiyi gönderin.

Örnekler

C.E-posta iletisi gönderme

Bu örnek, e-posta adresini kullanarak Ramiz Wilson için e-posta iletisine gönderir danw@Adventure-Works.com. Iletinin konu vardır. Automated Success Message. Iletinin gövdesini tümceyi içerir. '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.Bir sorgunun sonuçlarını içeren bir e-posta iletisi gönderme

Bu örnek, e-posta adresini kullanarak Ramiz Wilson için e-posta iletisine gönderir danw@Adventure-Works.com. Iletinin konu vardır. Work Order Countve iş siparişleri sayısını gösteren bir sorgu yürüten bir DueDate daha az iki günden sonra 30 Nisan 2004. Veritabanı posta sonucu bir metin dosyası olarak ekler.

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

Bu örnek, e-posta adresini kullanarak Ramiz Wilson için e-posta iletisine gönderir danw@Adventure-Works.com. Iletinin konu vardır. Work Order Listve iş siparişleri gösteren bir HTML belgesi içeren bir DueDate daha az iki günden sonra 30 Nisan 2004. Veritabanı posta, HTML biçiminde ileti 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 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' ;

Değişiklik Geçmişi

Güncelleştirilmiş içerik

Yeni parametreler @ from_address ve @ reply_to hakkında bilgi için sözdizimi ve bağımsız değişkenleri bölümleri eklendi.