Poczta DB programu SQL Server 2016 nie jest wysyłana

17

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ę?

Dave
źródło
Czy profil, z którego wysyłasz wiadomość e-mail, jest prywatny?
Kin Shah,
Jakieś błędy? Co z dziennikami? A serwer pocztowy? Czy serwer pocztowy odbiera jakieś połączenie z SQL? W pytaniu brakuje wielu istotnych informacji ...
Paolo,
@kin Nie, to publiczny e-mail. Oba e-maile to Office 365, a konta wysyłają i odbierają grzywny z SQL 2014. Dodano kilka dodatkowych szczegółów na końcu pierwszego akapitu opisującego sytuację.
Dave
Miałem na myśli Twój profil poczty w bazie danych.
Kin Shah
Czy jesteś w stanie pingować / telnet serwera SMTP ze swojego SQL Server 2016? Jeśli tak, możesz spróbować uruchomić skrypt VB z linku mssqltips.com/sqlservertip/1625/…, aby wykluczyć problem SMTP. Jeśli otrzymasz wiadomość testową, możesz być pewien, że jest to problem z serwerem SQL.
SQLPRODDBA

Odpowiedzi:

17

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:

wprowadź opis zdjęcia tutaj

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.

Dave
źródło
Miałem ten sam problem. Rozwiązane przez zastosowanie .net 3.5.
Sir Swears-a-lot
to naprawiło również mój problem! doprowadzało mnie to do szaleństwa, ale instalacja NET3.5 naprawiła mój problem!
NULL.Dude
To naprawiło ten sam problem dla mnie w dodatku SP1 CU8 2016
James Anderson
gdzie znajduje się plik wykonywalny poczty DB?
JzInqXc9Dg
@Dave OH JEZUS TO JEST NIESAMOWITE. Zastanawiam się ... czy używasz LogMeIn na tych serwerach? Napotkaliśmy dziwne sytuacje, w których LogMeIn odinstalowuje lub usuwa rzeczy, a oni odmawiają przyznania się do tego. Moja poczta z bazy danych w pewnym momencie działała dobrze na jednym pudełku i na pewno przestała działać mniej więcej w czasie, gdy przeprowadziliśmy się do LogMeIn
John Zabroski
10

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

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true"> 
<supportedRuntime version="v4.0"/>     
<supportedRuntime version="v2.0.50727"/>
</startup>
</configuration>

Ź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

Jalal Shahoud
źródło
4

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.

Yhagger
źródło
2
Istnieje już [Zbiorcza aktualizacja 2 dla SQL Server 2016 | support.microsoft.com/en-us/kb/3182270] z [POPRAWKA: Poczta bazy danych SQL Server 2016 nie działa na komputerze, na którym nie ma zainstalowanego programu .NET Framework 3.5 | support.microsoft.com/en-us/kb/3186435] .
Vladislav
1
Spędziłem tylko 30 minut, przyglądając się temu problemowi, zanim tu trafiłem. Dziękuję za oszczędność czasu.
Paul
1

Oprócz wspomnianych już przyczyn ważne jest również aktywowanie profilu e-mail na poziomie agenta SQL Server, jak wskazano tutaj :

  • Kliknij prawym przyciskiem myszy SQL Server Agent> wybierz Właściwości
  • Wybierz System powiadomień w lewym okienku

  • Znacznik wyboru> Włącz profil poczty

  • System weryfikacji poczty: poczta bazy danych
  • Zweryfikuj profil poczty: SQLAlerts
  • Znacznik wyboru> Dołącz treść wiadomości e-mail do powiadomienia
  • Kliknij OK.
  • Uruchom ponownie agenta.
Aleksiej
źródło