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
Bu makalede, veritabanı postasında ve bunların çözümlerinde karşılaşılan bazı yaygın hatalar açıklanmaktadır.
SQL Server örneğinizde T-SQL komutlarını çalıştırmak için SQL Server Management Studio 'yu (SSMS),Visual Studio Code için MSSQL uzantısını, sqlcmd'yi veya sık kullandığınız T-SQL sorgulama aracını kullanın.
'sp_send_dbmail' saklı yordamı bulunamadı
sp_send_dbmail saklı yordamı msdb veritabanına kurulur. Veritabanından sp_send_dbmail çalıştırmalısınız msdb ya da saklı yordam için üç bölümlü bir ad belirtmelisiniz.
Örnek:
EXEC msdb.dbo.sp_send_dbmail ...
Veya:
USE msdb;
GO
EXEC dbo.sp_send_dbmail ...
Veritabanı postasını etkinleştirmek ve yapılandırmak için Veritabanı postasını yapılandır'ı kullanın.
Profil geçerli değil
Bu iletinin iki olası nedeni vardır. Belirtilen profil yok veya sp_send_dbmail (Transact-SQL) çalıştıran kullanıcının profile erişme izni yok.
Profilin izinlerini denetlemek için, profilin adıyla sysmail_help_principalprofile_sp saklı yordamı (Transact-SQL) çalıştırın. Kullanıcının veya grubun profile erişmesine izin vermek için sysmail_add_principalprofile_sp (Transact-SQL) saklı yordamını veya Veritabanı postası yapılandırması'nı kullanın.
sp_send_dbmail'e izin verilmedi
Bu makalede, Veritabanı Postası göndermeye çalışan kullanıcının yürütme izni olmadığını belirten bir hata iletisinin nasıl giderilmediği açıklanır sp_send_dbmail
Hata metni:
EXECUTE permission denied on object 'sp_send_dbmail',
database 'msdb', schema 'dbo'.
Veritabanı postası göndermek için, kullanıcıların msdb veritabanında bir kullanıcı ve msdb veritabanında DatabaseMailUserRole veritabanı rolünün bir üyesi olması gerekir. MSDB kullanıcılarını veya gruplarını bu role eklemek için SQL Server Management Studio'yu kullanın veya Veritabanı Postası göndermesi gereken kullanıcı veya rol için aşağıdaki komutu çalıştırın.
EXEC msdb.dbo.sp_addrolemember @rolename = 'DatabaseMailUserRole'
,@membername = '<user or role name>';
GO
Daha fazla bilgi için bkz. sp_addrolemember ve sp_droprolemember.
Veritabanı e-postası kuyruğa alındı, sysmail_event_log veya Windows Uygulama Olay Günlüğü'nde hiçbir kayıt yok
Veritabanı Postası, e-posta iletilerini sıraya almak için Hizmet Aracısı'nı kullanır. Veritabanı Postası durdurulursa veya Hizmet Aracısı ileti teslimi veritabanında etkinleştirilmemişse msdb , Veritabanı Postası iletileri veritabanında kuyruğa alır ancak iletileri teslim edemez. Bu durumda, Hizmet Aracısı iletileri Hizmet Aracısı Posta kuyruğunda kalır. Hizmet Aracısı dış programı etkinleştirmez, bu nedenle sysmail_event_log içinde hiçbir günlük girdisi yoktur ve sysmail_allitems içindeki öğe durumu ile ilgili görünümlerde güncelleme yapılmaz.
Hizmet Aracısı'nın veritabanında etkinleştirilip etkinleştirilmediğini denetlemek için aşağıdaki deyimi yürütür msdb :
SELECT is_broker_enabled FROM sys.databases WHERE name = 'msdb';
0 değeri, msdb veritabanında Hizmet Aracısı ileti tesliminin etkinleştirilmediğini gösterir. Sorunu düzeltmek için aşağıdaki Transact-SQL komutuyla veritabanında Hizmet Aracısı'nı etkinleştirin:
USE master ;
GO
ALTER DATABASE msdb SET ENABLE_BROKER ;
GO
Veritabanı Postası, bir dizi dahili depolanan prosedüre dayanır. Yüzey alanını azaltmak için, bu saklı yordamlar SQL Server'ın yeni yüklemesinde devre dışı bırakılır. Bu saklı yordamları etkinleştirmek için, aşağıdaki örnekte olduğu gibi sistem saklı yordamının sp_configure kullanın:
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'Database Mail XPs', 1;
RECONFIGURE;
EXEC sp_configure 'show advanced options', 0;
RECONFIGURE;
GO
Veritabanı Postası msdb veritabanında durdurulmuş olabilir. Veritabanı Postası'nın durumunu denetlemek için aşağıdaki deyimi yürütür:
EXECUTE dbo.sysmail_help_status_sp;
Bir posta sunucusu veritabanında Veritabanı Postası'nı başlatmak için msdb veritabanında aşağıdaki komutu çalıştırın.
EXECUTE dbo.sysmail_start_sp;
Hizmet Aracısı etkinleştirildiğinde iletilerin iletişim ömrünü inceler; bu nedenle, Hizmet Aracısı iletim kuyruğunda yapılandırılan iletişim kutusu ömründen daha uzun olan tüm iletiler hemen başarısız olur. Veritabanı Postası başarısız iletilerin durumunu sysmail_allitems ve ilgili görünümlerinde güncelleştirir. E-posta iletilerinin yeniden gönderilip gönderilmeyeceğine karar vermeniz gerekir. Veritabanı Postası'nın kullandığı iletişim kutusu ömrünü yapılandırma hakkında daha fazla bilgi için bkz. sysmail_configure_sp.