Korzystam z SQL Server 2016 i świetnie się bawię ... moja poczta DB nie wysyła i zabrakło mi miejsc do szukania. Dokładnie sprawdziłem uprawnienia konta SQL do pliku wykonywalnego DBmail - odczytał i wykonał. Wprowadziłem regułę dla portu wychodzącego zapory 587. Próbowałem innego konta pocztowego i profilu z tymi samymi niewysłanymi problemami. Jedyne wpisy w dziennikach (dzienniki poczty db) rozpoczynają i kończą usługę. Nigdzie nie mogę znaleźć błędów. Wiadomości e-mail wydają się po prostu wchodzić do kolejki wysyłania i nigdy jej nie opuszczać. Konta mogą wysyłać i odbierać wiadomości e-mail samodzielnie oraz z wystąpienia programu SQL Server 2014 na innym komputerze.
Mam kolejkę elementów o statusie wysłania „niewysłany” i sprawdziłem wszystkie normalne miejsca z oczekiwanymi wynikami we wszystkich, oprócz długiej kolejki niewysłanych wiadomości:
SELECT * FROM msdb..sysmail_event_log order by log_id DESC
SELECT * FROM dbo.sysmail_mailitems
SELECT * FROM dbo.sysmail_sentitems
USE msdb
SELECT sent_status, *
FROM sysmail_allitems
SELECT is_broker_enabled FROM sys.databases WHERE name = 'msdb';
EXECUTE msdb.dbo.sysmail_help_status_sp
Próbowałem go wyłączyć i włączyć ponownie ... więc przegapiłem DMV itp., Które mogłyby rzucić światło na tę sytuację? Czy to znany problem z SQL Server 2016, którego nie szukałem? Jakieś inne kroki, aby wysłać tę pocztę?
Odpowiedzi:
Na kaprys, kiedy dwukrotnie sprawdzam uprawnienia, dwukrotnie kliknąłem plik wykonywalny poczty DB. Rezultatem na maszynie SQL Server 2014 było puste okno poleceń. Na SQL Server 2016 kliknięcie pliku wykonywalnego DB Mail wyświetliło ten komunikat:
Nie mogę znaleźć tego wymagania nigdzie w dokumentacji SQL Server 2016, ale jest to oczywiście wymóg. DB Mail działa idealnie bez żadnych innych zmian niż instalacja .NET 3.5.
źródło
Według Microsoft Support w Instalatorze SQL Server 2016 występuje błąd, który powoduje, że poczta bazy danych nie działa bez .net 3.5
Można obejść ten problem, tworząc plik DatabaseMail.exe.config w tym samym folderze, w którym istnieje plik DatabaseMail.exe (folder Binn), napisz do pliku i zapisz z kodowaniem utf-8
Źródło: Poprawka: Poczta bazy danych SQL Server 2016 nie działa na komputerze, na którym nie ma zainstalowanego programu .NET Framework 3.5
źródło
Zamiast tego spójrz na to. W ten sposób wystarczy skopiować plik zamiast instalować .net 3.5. Najpierw musisz zainstalować CU1. Sprawdź tutaj po więcej szczegółów.
źródło
Oprócz wspomnianych już przyczyn ważne jest również aktywowanie profilu e-mail na poziomie agenta SQL Server, jak wskazano tutaj :
źródło