Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
azure SQL Managed Instance
Řešení potíží s databázovou poštou zahrnuje kontrolu následujících obecných oblastí systému Databázová pošta. Tyto postupy jsou uvedeny v logickém pořadí, ale lze je vyhodnotit v libovolném pořadí.
Povolení
Abyste mohli řešit všechny aspekty databázové pošty, musíte být členem pevné role serveru správce systému . Uživatelé, kteří nejsou členy pevné role serveru správce systému , mohou získat pouze informace o e-mailech, které se pokusí odeslat, ne o e-mailech odeslaných jinými uživateli.
Je povolená databázová pošta
V aplikaci SQL Server Management Studio se připojte k instanci SQL Serveru pomocí okna editoru dotazů a spusťte následující kód:
sp_configure 'show advanced', 1; GO RECONFIGURE; GO sp_configure; GOV podokně výsledků ověřte, že
run_valueje pro XPs databázové pošty (možnost konfigurace serveru) nastavena na1hodnotu .Pokud
run_valuenení1, není Database Mail povoleno.Databázová pošta není automaticky povolená, aby se snížil počet funkcí dostupných pro útok uživatelem se zlými úmysly. Další informace najdete v tématu konfigurace oblasti Surface.
Pokud se rozhodnete, že je vhodné povolit databázovou poštu, spusťte následující kód:
sp_configure 'show advanced', 1; GO RECONFIGURE; GO sp_configure 'Database Mail XPs', 1; GO RECONFIGURE; GOPokud chcete obnovit
sp_configurepostup do výchozího stavu, který nezobrazuje pokročilé možnosti, spusťte následující kód:sp_configure 'show advanced', 0; GO RECONFIGURE; GO
Jsou uživatelé správně nakonfigurovaní pro odesílání pošty.
Chcete-li odeslat databázovou poštu, musí být uživatelé členem databázové role DatabaseMailUserRole v
msdbdatabázi. Členové pevné role serveru správce systému amsdbdb_owner role jsou automaticky členy role DatabaseMailUserRole . Chcete-li zobrazit seznam všech ostatních členů DatabaseMailUserRole spusťte následující příkaz:EXEC msdb.sys.sp_helprolemember 'DatabaseMailUserRole';Chcete-li přidat uživatele do role DatabaseMailUserRole , použijte následující příkaz:
USE msdb; GO sp_addrolemember @rolename = 'DatabaseMailUserRole' ,@membername = '<database user>';Aby uživatelé mohli odesílat databázové pošty, musí mít přístup alespoň k jednomu profilu databázové pošty. Pokud chcete zobrazit seznam uživatelů (subjektů) a profilů, ke kterým mají přístup, spusťte následující příkaz.
EXEC msdb.dbo.sysmail_help_principalprofile_sp;Pomocí Průvodce konfigurací databázové pošty můžete vytvářet profily a udělovat uživatelům přístup k profilům.
Je spuštěna databázová pošta
Externí program Databázové pošty je aktivován při zpracování e-mailových zpráv. Pokud nebyly odeslány žádné zprávy po zadanou dobu časového limitu, program se ukončí.
Pokud chcete ověřit, že je aktivace databázové pošty spuštěná, spusťte následující příkaz:
EXEC msdb.dbo.sysmail_help_status_sp;Pokud se aktivace databázové pošty nespustí, spusťte ho spuštěním následujícího příkazu:
EXEC msdb.dbo.sysmail_start_sp;Pokud je spuštěn externí program Databázová pošta, zkontrolujte stav fronty pošty pomocí následujícího příkazu:
EXEC msdb.dbo.sysmail_help_queue_sp @queue_type = 'mail';Fronta pošty by měla mít stav
RECEIVES_OCCURRING. Stavová fronta se může lišit z momentu na moment. Pokud stav poštovní fronty neníRECEIVES_OCCURRING, zkuste ji restartovat. Zastavte frontu pomocí následujícího příkazu:EXEC msdb.dbo.sysmail_stop_sp;Poté spusťte frontu pomocí následujícího příkazu:
EXEC msdb.dbo.sysmail_start_sp;Poznámka:
lengthPomocí sloupce v saděsysmail_help_queue_spvýsledků určete počet e-mailů ve frontě pošty.
Problémy mají vliv na některé nebo všechny účty
Pokud jste zjistili, že některé, ale ne všechny profily mohou odesílat e-maily, mohou mít problémové profily potíže s účty Databázové pošty, které používají.
Pokud chcete zjistit, které účty jsou při odesílání pošty úspěšné, spusťte následující příkaz:
SELECT sent_account_id, sent_date FROM msdb.dbo.sysmail_sentitems;Pokud nepracovní profil nepoužívá žádný z uvedených účtů, je možné, že všechny účty dostupné pro tento profil nefungují správně. Pokud chcete otestovat jednotlivé účty, vytvořte pomocí Průvodce konfigurací databázové pošty nový profil s jedním účtem a pak pomocí dialogového okna Odeslat testovací e-mail odešlete poštu pomocí nového účtu.
Chcete-li zobrazit chybové zprávy vrácené databázová pošta, spusťte následující příkaz:
SELECT * FROM msdb.dbo.sysmail_event_log;Poznámka:
Databázová pošta považuje poštu za poslanou při úspěšném doručení na poštovní server SMTP. Následné chyby, jako je například neplatná e-mailová adresa příjemce, mohou přesto zabránit doručení pošty, ale nebudou obsaženy v protokolu databázové pošty.
Opakování doručování pošty
Pokud jste zjistili, že databázová pošta selhává, protože server SMTP se nedá spolehlivě dosáhnout, můžete zvýšit míru úspěšného doručování pošty zvýšením počtu pokusů o odeslání každé zprávy službou Database Mail. Spusťte Průvodce konfigurací databázové pošty a vyberte možnost Zobrazit nebo změnit systémové parametry. Případně můžete k profilu přidružit další účty, takže při převzetí služeb při selhání z primárního účtu používá Databázová pošta k odesílání e-mailů účet převzetí služeb při selhání.
Na stránce Konfigurovat systémové parametry znamenají výchozí hodnoty pěti pokusů o opakované připojení k účtu a 60 sekund pro zpoždění pro opakované pokusy o připojení, že doručení zprávy selže, pokud nelze server SMTP dosáhnout do 5 minut. Zvyšte tyto parametry, aby se prodloužila doba, než dojde k nezdaření doručení zprávy.
Poznámka:
Při odesílání velkého počtu zpráv mohou velké výchozí hodnoty zvýšit spolehlivost, ale výrazně zvýší využití prostředků, protože mnoho zpráv se pokouší doručovat opakovaně. Vyřešte problém původního problému tím, že vyřešíte problém se sítí nebo serverem SMTP, který brání tomu, aby databázová pošta kontaktovala server SMTP okamžitě.
Ověřte, že je pro msdb povolený zprostředkovatel služeb.
Databázová pošta vyžaduje, aby byla pro msdb databázi povolená služba Service Broker. Pomocí následujícího skriptu T-SQL ověřte, zda je na msdb zapnutý zprostředkovatel služeb:
SELECT is_broker_enabled FROM sys.databases WHERE name = 'msdb' ; -- should be 1
Pokud není povolený, musí být povolený zprostředkovatel služeb. Následující ukázkový skript vyžaduje výhradní přístup k msdb systémovým databázím, takže to nemusí být možné provést během typické pracovní doby. Další informace naleznete v tématu ALTER DATABASE ... SET ENABLE_BROKER.
ALTER DATABASE msdb SET ENABLE_BROKER;
Související obsah
- objekty konfigurace databázové pošty
- objekty zasílání zpráv databáze
- Databázové pošty externí program
- Databázová pošta - protokol a audity
- Konfigurace agenta SQL Serveru
- Nakonfigurujte poštu agenta SQL Serveru pro použití databázové pošty