Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Managed Instance
Rozwiązywanie problemów z pocztą bazy danych obejmuje sprawdzenie następujących ogólnych obszarów systemu poczty bazy danych. Te procedury są prezentowane w kolejności logicznej, ale można je ocenić w dowolnej kolejności.
Uprawnienia
Aby rozwiązać wszystkie aspekty poczty bazy danych, musisz być członkiem stałej roli serwera sysadmin . Użytkownicy, którzy nie są członkami stałej roli serwera sysadmin , mogą uzyskać tylko informacje o wiadomościach e-mail, które próbują wysłać, a nie o wiadomościach e-mail wysyłanych przez innych użytkowników.
Czy poczta bazy danych jest włączona
W programie SQL Server Management Studio połącz się z wystąpieniem programu SQL Server przy użyciu okna edytora zapytań, a następnie wykonaj następujący kod:
sp_configure 'show advanced', 1; GO RECONFIGURE; GO sp_configure; GOW okienku wyników upewnij się, że
run_value, jeśli chodzi o Poczta w bazie danych XPs (opcja konfiguracji serwera), jest ustawiona na1.Jeśli
run_valuenie jest1, Database Mail nie jest włączony.Poczta bazy danych nie jest automatycznie włączona w celu zmniejszenia liczby funkcji dostępnych do ataku przez złośliwego użytkownika. Aby uzyskać więcej informacji, zobacz konfiguracja obszaru powierzchni.
Jeśli zdecydujesz, że jest to odpowiednie do włączenia poczty bazy danych, wykonaj następujący kod:
sp_configure 'show advanced', 1; GO RECONFIGURE; GO sp_configure 'Database Mail XPs', 1; GO RECONFIGURE; GOAby przywrócić procedurę do stanu domyślnego
sp_configure, który nie pokazuje opcji zaawansowanych, wykonaj następujący kod:sp_configure 'show advanced', 0; GO RECONFIGURE; GO
Czy użytkownicy są prawidłowo skonfigurowani do wysyłania wiadomości e-mail
Aby wysyłać pocztę bazy danych, użytkownicy muszą być członkiem roli bazy danych DatabaseMailUserRole w
msdbbazie danych. Członkowie stałej roli serwera sysadmin imsdbdb_owner są automatycznie członkami roli DatabaseMailUserRole . Aby wyświetlić listę wszystkich innych członków elementu DatabaseMailUserRole , wykonaj następującą instrukcję:EXEC msdb.sys.sp_helprolemember 'DatabaseMailUserRole';Aby dodać użytkowników do roli DatabaseMailUserRole , użyj następującej instrukcji:
USE msdb; GO sp_addrolemember @rolename = 'DatabaseMailUserRole' ,@membername = '<database user>';Aby wysyłać pocztę bazy danych, użytkownicy muszą mieć dostęp do co najmniej jednego profilu poczty bazy danych. Aby wyświetlić listę użytkowników i profilów, do których mają dostęp, wykonaj następujące polecenie.
EXEC msdb.dbo.sysmail_help_principalprofile_sp;Kreator konfiguracji poczty bazy danych umożliwia tworzenie profilów i udzielanie dostępu do profilów użytkownikom.
Czy poczta bazy danych została uruchomiona
Program zewnętrzny poczty bazy danych jest aktywowany, gdy są wiadomości e-mail do przetworzenia. Jeśli nie było żadnych komunikatów do wysłania dla określonego limitu czasu, program kończy działanie.
Aby potwierdzić, że aktywacja poczty bazy danych została uruchomiona, wykonaj następującą instrukcję:
EXEC msdb.dbo.sysmail_help_status_sp;Jeśli aktywacja poczty bazy danych nie została uruchomiona, wykonaj następującą instrukcję, aby ją uruchomić:
EXEC msdb.dbo.sysmail_start_sp;Jeśli program zewnętrzny poczty baz danych jest uruchomiony, sprawdź stan kolejki poczty za pomocą następującego polecenia:
EXEC msdb.dbo.sysmail_help_queue_sp @queue_type = 'mail';Kolejka poczty powinna mieć stan
RECEIVES_OCCURRING. Kolejka stanu może się różnić od chwili do chwili. Jeśli stan kolejki poczty nie jestRECEIVES_OCCURRING, spróbuj ponownie uruchomić kolejkę. Zatrzymaj kolejkę, używając następującej instrukcji:EXEC msdb.dbo.sysmail_stop_sp;Następnie uruchom kolejkę przy użyciu następującej instrukcji:
EXEC msdb.dbo.sysmail_start_sp;Uwaga / Notatka
Użyj kolumny
lengthw zestawie wynikówsysmail_help_queue_sp, aby określić liczbę wiadomości e-mail w kolejce poczty.
Problemy wpływają na niektóre lub wszystkie konta
Jeśli ustalisz, że niektóre, ale nie wszystkie profile mogą wysyłać pocztę, mogą wystąpić problemy z kontami poczty bazy danych używanymi przez profile problemów.
Aby określić, która konto odnosi sukces podczas wysyłania poczty, wykonaj poniższe polecenie:
SELECT sent_account_id, sent_date FROM msdb.dbo.sysmail_sentitems;Jeśli profil inny niż służbowy nie używa żadnego z wymienionych kont, możliwe jest, że wszystkie konta dostępne dla profilu nie działają prawidłowo. Aby przetestować poszczególne konta, użyj Kreatora konfiguracji poczty bazy danych, aby utworzyć nowy profil z jednym kontem, a następnie użyć okna dialogowego Wyślij testową pocztę e-mail, aby wysłać pocztę przy użyciu nowego konta.
Aby wyświetlić komunikaty o błędach zwracane przez pocztę bazy danych, wykonaj następującą instrukcję:
SELECT * FROM msdb.dbo.sysmail_event_log;Uwaga / Notatka
Poczta bazy danych uznaje pocztę za wysłaną, gdy zostanie pomyślnie dostarczona do serwera poczty SMTP. Kolejne błędy, takie jak nieprawidłowy adres e-mail adresata, nadal mogą uniemożliwić dostarczanie wiadomości e-mail, ale nie będą zawarte w dzienniku poczty bazy danych.
Ponów próbę dostarczenia poczty
Jeśli ustalisz, że poczta bazy danych kończy się niepowodzeniem, ponieważ nie można niezawodnie uzyskać dostępu do serwera SMTP, możesz zwiększyć pomyślną szybkość dostarczania poczty, zwiększając liczbę prób wysłania każdej wiadomości w usłudze Database Mail. Uruchom Kreatora konfiguracji poczty bazy danych i wybierz opcję Wyświetl lub zmień parametry systemowe. Alternatywnie można skojarzyć więcej kont z profilem, tak aby po przejściu w tryb failover z konta podstawowego poczta bazy danych używała konta trybu failover do wysyłania wiadomości e-mail.
Na stronie Konfigurowania parametrów systemowych wartości domyślne wynoszące pięciokrotność dla prób ponawiania konta i 60 sekund dla opóźnienia ponawiania prób konta oznacza, że dostarczanie komunikatów zakończy się niepowodzeniem, jeśli serwer SMTP nie będzie osiągalny w ciągu 5 minut. Zwiększ te parametry, aby wydłużyć czas przed niepowodzeniem dostarczania komunikatów.
Uwaga / Notatka
W przypadku wysyłania dużej liczby komunikatów duże wartości domyślne mogą zwiększyć niezawodność, ale znacznie zwiększy wykorzystanie zasobów, ponieważ wiele komunikatów próbuje zostać dostarczonych ponownie. Rozwiąż główny problem, rozwiązując problem z siecią lub serwerem SMTP, który uniemożliwia szybkie skontaktowanie się z serwerem SMTP w usłudze Database Mail.
Sprawdź, czy broker usług jest włączony dla msdb
Poczta bazy danych wymaga włączenia usługi Service Broker dla msdb bazy danych. Sprawdź, czy broker usługi jest włączony na msdb za pomocą następującego skryptu języka T-SQL.
SELECT is_broker_enabled FROM sys.databases WHERE name = 'msdb' ; -- should be 1
Jeśli nie jest włączona, należy włączyć brokera usług. Poniższy przykładowy skrypt wymaga jednak wyłącznego msdb dostępu do systemowych baz danych, więc może to nie być możliwe do wykonania w typowych godzinach pracy. Aby uzyskać więcej informacji, zobacz ALTER DATABASE ... USTAW ENABLE_BROKER.
ALTER DATABASE msdb SET ENABLE_BROKER;
Treści powiązane
- Obiekty konfiguracyjne Poczty Bazy Danych
- Obiekty poczty bazy danych
- program zewnętrzny poczty bazy danych
- Dziennik poczty bazy danych i inspekcje
- konfigurowanie agenta programu SQL Server
- Skonfiguruj pocztę Agenta programu SQL Server do korzystania z Poczty bazy danych