Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Managed Instance
A Database Mail hibaelhárítása magában foglalja az adatbázis-levelezési rendszer alábbi általános területeinek ellenőrzését. Ezek az eljárások logikai sorrendben jelennek meg, de bármilyen sorrendben kiértékelhetők.
Engedélyek
A Database Mail minden aspektusának elhárításához a sysadmin rögzített kiszolgálói szerepkör tagjának kell lennie. Azok a felhasználók, akik nem tagjai a sysadmin rögzített kiszolgálói szerepkörnek, csak az általuk küldött e-mailekről szerezhetnek be információt, a többi felhasználó által küldött e-mailekről nem.
Engedélyezve van az adatbázis-levelezés
Az SQL Server Management Studióban csatlakozzon egy SQL Server-példányhoz egy lekérdezésszerkesztő ablak használatával, majd hajtsa végre a következő kódot:
sp_configure 'show advanced', 1; GO RECONFIGURE; GO sp_configure; GOAz eredmények panelen győződjön meg arról, hogy a
run_valueDatabase Mail XPs (kiszolgálókonfigurációs beállítás) beállítás értéke1.Ha a
run_valuenem1, akkor a Database Mail nincs engedélyezve.A Database Mail nincs automatikusan engedélyezve, hogy csökkentse a rosszindulatú felhasználók által támadásra elérhető funkciók számát. További információ: Felület konfiguráció.
Ha úgy dönt, hogy a Database Mail engedélyezése megfelelő, hajtsa végre a következő kódot:
sp_configure 'show advanced', 1; GO RECONFIGURE; GO sp_configure 'Database Mail XPs', 1; GO RECONFIGURE; GOHa vissza szeretné állítani az eljárást az
sp_configurealapértelmezett állapotára, amely nem jelenít meg speciális beállításokat, hajtsa végre a következő kódot:sp_configure 'show advanced', 0; GO RECONFIGURE; GO
Megfelelően vannak konfigurálva a felhasználók az e-mailek küldésére
A Database Mail küldéséhez a felhasználóknak a DatabaseMailUserRole adatbázis-szerepkör tagjának kell lenniük az
msdbadatbázisban. A sysadmin javított kiszolgálói szerepkör és amsdbdb_owner szerepkör tagjai automatikusan a DatabaseMailUserRole szerepkör tagjává válnak. A DatabaseMailUserRole többi tagjának listázásához hajtsa végre a következő utasítást:EXEC msdb.sys.sp_helprolemember 'DatabaseMailUserRole';Ha felhasználókat szeretne hozzáadni a DatabaseMailUserRole szerepkörhöz, használja a következő utasítást:
USE msdb; GO sp_addrolemember @rolename = 'DatabaseMailUserRole' ,@membername = '<database user>';A Database Mail küldéséhez a felhasználóknak hozzáféréssel kell rendelkezniük legalább egy Database Mail-profilhoz. A felhasználók (tagok) és azok a profilok listázásához, amelyekhez hozzáféréssel rendelkeznek, hajtsa végre az alábbi utasítást.
EXEC msdb.dbo.sysmail_help_principalprofile_sp;Az Adatbázisposta konfigurációs varázslóval profilokat hozhat létre , és hozzáférést biztosíthat a felhasználók számára a profilokhoz.
Elindult az adatbázisposta?
A külső adatbázis-levelezési program akkor aktiválódik, ha vannak feldolgozandó e-mailek. Ha a megadott időtúllépési időszakra nem érkezett üzenet, a program kilép.
A Database Mail aktiválásának elindításához hajtsa végre a következő utasítást:
EXEC msdb.dbo.sysmail_help_status_sp;Ha a Database Mail aktiválása nem indul el, hajtsa végre a következő utasítást a indításához:
EXEC msdb.dbo.sysmail_start_sp;Ha a Database Mail külső program elindult, ellenőrizze az üzenetsor állapotát a következő utasítással:
EXEC msdb.dbo.sysmail_help_queue_sp @queue_type = 'mail';A levelezési üzenetsornak a következő állapotúnak
RECEIVES_OCCURRINGkell lennie: . Az állapotsor pillanatról pillanatra változhat. Ha a levelezési üzenetsor állapota nemRECEIVES_OCCURRING, próbálja meg újraindítani az üzenetsort. Állítsa le a sort a következő utasítással:EXEC msdb.dbo.sysmail_stop_sp;Ezután indítsa el az üzenetsort a következő utasítással:
EXEC msdb.dbo.sysmail_start_sp;Megjegyzés:
A(z)
lengtheredményhalmazában találhatósysmail_help_queue_sposzlop segítségével meghatározhatja az e-mailek számát az üzenetsorban.
Problémák néhány vagy az összes fiókot érintenek
Ha megállapította, hogy csak néhány profil küldhet e-mailt, lehetséges, hogy problémák vannak a problémát okozó profilok által használt adatbázis-levelezési fiókokkal.
Annak megállapításához, hogy mely fiókok sikeresek az e-mailek küldésében, hajtsa végre a következő utasítást:
SELECT sent_account_id, sent_date FROM msdb.dbo.sysmail_sentitems;Ha egy nem működő profil nem használja a felsorolt fiókokat, lehetséges, hogy a profilhoz elérhető összes fiók nem működik megfelelően. Az egyes fiókok teszteléséhez az Adatbázisposta konfigurációs varázslójával hozzon létre egy új profilt egyetlen fiókkal, majd a Teszt e-mail küldése párbeszédpanelen küldjön e-maileket az új fiókkal.
A Database Mail által visszaadott hibaüzenetek megtekintéséhez hajtsa végre a következő utasítást:
SELECT * FROM msdb.dbo.sysmail_event_log;Megjegyzés:
A Database Mail úgy véli, hogy a levelek akkor lesznek elküldve, ha sikeresen kézbesítik az SMTP-levelezési kiszolgálóra. A későbbi hibák, például egy érvénytelen címzett e-mail-cím, továbbra is megakadályozhatják a levelek kézbesítését, de nem lesznek benne az adatbázis levelezési naplójában.
Levélkézbesítés újrapróbálkozása
Ha megállapította, hogy az adatbázisposta sikertelen, mert az SMTP-kiszolgáló nem érhető el megbízhatóan, növelheti a sikeres levelek kézbesítési arányát, ha növeli az egyes üzenetek küldésére tett kísérletek számát. Indítsa el az Adatbázisposta konfigurációs varázslót, és válassza a Rendszerparaméterek megtekintése vagy módosítása lehetőséget. Másik lehetőségként további fiókokat is társíthat a profilhoz, így az elsődleges fiókból történő feladatátvételkor a Database Mail a feladatátvételi fiókkal küld e-maileket.
A Rendszerparaméterek konfigurálása lapon a fiók újrapróbálkozási kísérleteinek alapértelmezett értéke ötször, a fiók újrapróbálkozási késleltetése esetén pedig 60 másodperc, azt jelenti, hogy az üzenetkézbesítés meghiúsul, ha az SMTP-kiszolgáló 5 perc alatt nem érhető el. Növelje ezeket a paramétereket, hogy meghosszabbítsa az üzenetkézbesítés sikertelensége előtt eltelt időt.
Megjegyzés:
Nagy mennyiségű üzenet küldésekor a nagy alapértelmezett értékek növelhetik a megbízhatóságot, de jelentősen növelik az erőforrások használatát, mivel a rendszer újra és újra megkísérli kézbesíteni az üzeneteket. A gyökérproblémát a hálózati vagy SMTP-kiszolgálói probléma megoldásával háríthatja el, amely megakadályozza, hogy a Database Mail azonnal kapcsolatba lépjen az SMTP-kiszolgálóval.
Annak ellenőrzése, hogy a szolgáltatásközvetítő engedélyezve van-e az msdb-hez
Az adatbázis-levelezéshez engedélyezni kell a Service Brokert.msdb Ellenőrizze, hogy a szolgáltatásközvetítő msdb engedélyezve van-e a következő T-SQL-szkripttel:
SELECT is_broker_enabled FROM sys.databases WHERE name = 'msdb' ; -- should be 1
Ha nincs engedélyezve, a szolgáltatásközvetítőt engedélyezni kell. Az alábbi példaszkript azonban kizárólagos hozzáférést igényel a msdb rendszeradatbázisokhoz, ezért ez nem feltétlenül valósítható meg a szokásos munkaidőben. További információért tekintse meg a következőt: ALTER DATABASE ... SET ENABLE_BROKER.
ALTER DATABASE msdb SET ENABLE_BROKER;