Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Yönetilen Örneği
Veritabanı Postası sorunlarını gidermek için Veritabanı Posta sisteminin aşağıdaki genel alanlarının denetlenilmesi gerekir. Bu yordamlar mantıksal bir sırada sunulur, ancak herhangi bir sırada değerlendirilebilir.
İzinler
Veritabanı Postası'nın tüm sorunlarını gidermek için sysadmin sabit sunucu rolünün üyesi olmanız gerekir. Sysadmin sabit sunucu rolünün üyesi olmayan kullanıcılar, diğer kullanıcılar tarafından gönderilen e-postalar hakkında değil, yalnızca göndermeye çalıştıkları e-postalar hakkında bilgi edinebilir.
Hizmet Aracısı'nın msdb için etkinleştirildiğini doğrulayın
Veritabanı postası, msdb veritabanı için Hizmet Aracısı'nın etkinleştirilmiş olmasını gerektirir.
SQL Server Management Studio'da, sorgu düzenleyicisi penceresini kullanarak bir SQL Server örneğine bağlanın. Hizmet aracısının etkinleştirilip etkinleştirilmediğini
msdbaşağıdaki T-SQL betiğiyle doğrulayın:SELECT is_broker_enabled FROM sys.databases WHERE name = 'msdb' ; -- should be 1- Etkinleştirilirse Veritabanı postanın etkinleştirildiğini doğrulama ve Veritabanı postalarının başlatılıp başlatılmadığını doğrulama bölümüne geçin.
- Etkinleştirilmemişse, hizmet aracısı etkinleştirilmelidir.
Ancak aşağıdaki örnek betik, sistem veritabanlarına
msdbözel erişim gerektirir, bu nedenle bu işlem tipik iş saatlerinde yürütülemez.Hizmet Aracısı'nın gerekli kilidi alabilmesi için SQL Server Aracısı hizmetini durdurun.
Üzerinde
msdbHizmet Aracısı'nı etkinleştirmek için aşağıdakileri yürütebilirsiniz. Daha fazla bilgi için bkz ALTER DATABASE . ... SET ENABLE_BROKER.ALTER DATABASE msdb SET ENABLE_BROKER;SQL Server Agent hizmetini yeniden başlatın.
Veritabanı postalarının etkin olduğunu doğrulama
SQL Server Management Studio'da, sorgu düzenleyicisi penceresini kullanarak bir SQL Server örneğine bağlanın. Veritabanı postasının aşağıdaki kodla etkinleştirildiğini doğrulayın:
sp_configure 'show advanced', 1; GO RECONFIGURE; GO sp_configure; GOSonuçlar bölmesinde,
run_valueiçin ayarın olarak yapıldığını onaylayın.- Eğer
run_value1ise, Veritabanı postasının başlatılıp başlatılmadığını doğrulama bölümüne geçin. - Eğer
run_value1değilse, Veritabanı Postası etkin değildir.
Veritabanı Postası, kötü amaçlı bir kullanıcının saldırısı için kullanılabilecek özellik sayısını azaltmak için otomatik olarak etkinleştirilmez. Daha fazla bilgi için bkz. yüzey alanı yapılandırması.
- Eğer
Veritabanı Postası'nı etkinleştirmenin uygun olduğuna karar verirseniz aşağıdaki kodu yürütebilirsiniz:
sp_configure 'show advanced', 1; GO RECONFIGURE; GO sp_configure 'Database Mail XPs', 1; GO RECONFIGURE; GOVarsayılan durumda gelişmiş seçenekleri göstermeyen prosedürü geri yüklemek için aşağıdaki kodu yürütün:
sp_configure 'show advanced', 0; GO RECONFIGURE; GO
Veritabanı postalarının başlatıldığını doğrulayın
İşlenecek e-posta iletileri olduğunda Veritabanı Posta Dış Programı etkinleştirilir. Belirtilen zaman aşımı süresi boyunca gönderilecek ileti olmadığında, program kapatılır.
SQL Server Management Studio'da, sorgu düzenleyicisi penceresini kullanarak bir SQL Server örneğine bağlanın. Veritabanı Postası dış programının başlatıldığını doğrulamak için aşağıdaki ifadeyi yürütür:
EXEC msdb.dbo.sysmail_help_status_sp;Veritabanı Posta durumu
STARTEDdeğilse, başlatmak için aşağıdaki deyimi yürütün:EXEC msdb.dbo.sysmail_start_sp;Veritabanı Postası dış programı başlatılmışsa, posta kuyruğunun durumunu aşağıdaki komutla denetleyin.
EXEC msdb.dbo.sysmail_help_queue_sp @queue_type = 'mail';Posta kuyruğunun durumu
RECEIVES_OCCURRINGolmalıdır. Durum kuyruğu bir andan diğerine farklılık gösterebilir. Posta kuyruğu durumuRECEIVES_OCCURRINGdeğilse, kuyruğu yeniden başlatmayı deneyin. Aşağıdaki deyimi kullanarak kuyruğu durdurun:EXEC msdb.dbo.sysmail_stop_sp;Ardından aşağıdaki deyimi kullanarak kuyruğu başlatın:
EXEC msdb.dbo.sysmail_start_sp;Uyarı
lengthPosta kuyruğundaki e-posta sayısını belirlemek için sonuç kümesindekisysmail_help_queue_spsütununu kullanın.
Kullanıcılar posta gönderecek şekilde düzgün yapılandırılmış mı?
Veritabanı Postası göndermek için, kullanıcıların veritabanındaki DatabaseMailUserRole veritabanı rolünün
msdbbir üyesi olması gerekir. Sysadmin sabit sunucu rolünün vemsdbdb_owner rolünün üyeleri otomatik olarak DatabaseMailUserRole rolünün üyeleridir. DatabaseMailUserRole'un diğer tüm üyelerini listelemek için aşağıdaki deyimi çalıştırın:EXEC msdb.sys.sp_helprolemember 'DatabaseMailUserRole';DatabaseMailUserRole rolüne kullanıcı eklemek için aşağıdaki deyimi kullanın:
USE msdb; GO sp_addrolemember @rolename = 'DatabaseMailUserRole' ,@membername = '<database user>';Veritabanı Postası göndermek için kullanıcıların en az bir Veritabanı Posta profiline erişimi olmalıdır. Kullanıcıları (sorumluları) ve erişim sahibi oldukları profilleri listelemek için aşağıdaki deyimi yürütür.
EXEC msdb.dbo.sysmail_help_principalprofile_sp;Profil oluşturmak ve kullanıcılara profil erişimi vermek için Veritabanı Posta Yapılandırma Sihirbazı'nı kullanın.
Sorunlar hesapların bazılarını mı yoksa tümünü mü etkiler?
Bazı ancak tüm profillerin posta gönderemediğini belirlediyseniz, sorun profilleri tarafından kullanılan Veritabanı Posta hesaplarıyla ilgili sorunlarla karşılaşabilirsiniz.
Hangi hesapların posta göndermede başarılı olduğunu belirlemek için aşağıdaki deyimi yürütür:
SELECT sent_account_id, sent_date FROM msdb.dbo.sysmail_sentitems;Çalışmayan bir profil listelenen hesaplardan hiçbirini kullanmıyorsa, profil için kullanılabilen tüm hesaplar düzgün çalışmıyor olabilir. Tek tek hesapları test etmek için Veritabanı Posta Yapılandırma Sihirbazı'nı kullanarak tek bir hesapla yeni bir profil oluşturun ve ardından Test E-postası Gönder iletişim kutusunu kullanarak yeni hesabı kullanarak posta gönderin.
Veritabanı Postası tarafından döndürülen hata iletilerini görüntülemek için aşağıdaki deyimi yürütür:
SELECT * FROM msdb.dbo.sysmail_event_log;Uyarı
Veritabanı Postası, bir SMTP posta sunucusuna başarıyla teslim edildiğinde postanın gönderilmesini kabul eder. Geçersiz alıcı e-posta adresi gibi sonraki hatalar, postanın teslim edilmesini yine de engelleyebilir, ancak Veritabanı Posta günlüğünde yer almaz.
Posta teslimini yeniden deneyin
SMTP sunucusuna güvenilir bir şekilde ulaşılamadığından Veritabanı Postası'nın başarısız olduğunu belirlediyseniz, Veritabanı Postası'nın her iletiyi göndermeye çalışma sayısını artırarak başarılı posta teslim oranınızı artırabilirsiniz. Veritabanı Posta Yapılandırma Sihirbazı'nı başlatın ve Sistem parametrelerini görüntüle veya değiştir seçeneğini belirleyin. Alternatif olarak, birincil hesaptan yük devredilmesi durumunda, Veritabanı Postası'nın e-posta göndermek için yük devretme hesabını kullanabilmesi amacıyla profile daha fazla hesap ekleyebilirsiniz.
Sistem Parametrelerini Yapılandır sayfasında, Hesap Yeniden Deneme Denemeleri için beş kez ve Hesap Yeniden Deneme Gecikmesi için 60 saniye olan varsayılan değerler, SMTP sunucusuna 5 dakika içinde ulaşılamazsa ileti tesliminin başarısız olacağı anlamına gelir. İleti tesliminin başarısız olması için gereken süreyi uzatmak için bu parametreleri artırın.
Uyarı
Çok sayıda ileti gönderildiğinde, büyük varsayılan değerler güvenilirliği artırabilir, ancak birçok ileti tekrar tekrar teslim edilmeye çalışıldığında kaynakların kullanımını önemli ölçüde artırır. Veritabanı Postası'nın SMTP sunucusuyla hemen iletişim kurmasını engelleyen ağ veya SMTP sunucusu sorununu çözerek kök sorunu giderin.