Megosztás a következőn keresztül:


Az adatbázis e-mailjeinek általános hibaelhárítási lépései

A következőkre vonatkozik:SQL ServerAzure 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

  1. 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;
    GO
    

    Az 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éke 1.

    Ha a run_value nem 1, 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ó.

  2. 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;
    GO
    

    Ha vissza szeretné állítani az eljárást az sp_configure alapé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

  1. A Database Mail küldéséhez a felhasználóknak a DatabaseMailUserRole adatbázis-szerepkör tagjának kell lenniük az msdb adatbázisban. A sysadmin javított kiszolgálói szerepkör és a msdbdb_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';
    
  2. 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>';
    
  3. 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;
    
  4. 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.

  1. 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;
    
  2. 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;
    
  3. 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 nem RECEIVES_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) length eredményhalmazában található sysmail_help_queue_sp oszlop 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.

  1. 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;
    
  2. 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.

  3. 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

  1. 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.

  2. 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;