Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Managed Instance
Ez a cikk az adatbázis-levelezéssel és azok megoldásaival kapcsolatos gyakori hibákat ismerteti.
T-SQL-parancsok SQL Server-példányon való futtatásához használja az SQL Server Management Studiót (SSMS), a Visual Studio Code MSSQL-bővítményét, az sqlcmd-et vagy a kedvenc T-SQL-lekérdezési eszközét.
Nem található az "sp_send_dbmail" tárolt eljárás
A sp_send_dbmail tárolt eljárás telepítve van az msdb adatbázisban. Vagy a sp_send_dbmail az msdb adatbázisból kell futtatnia, vagy meg kell adnia a tárolt eljárás háromrészes nevét.
Példa:
EXEC msdb.dbo.sp_send_dbmail ...
Vagy:
USE msdb;
GO
EXEC dbo.sp_send_dbmail ...
Az adatbázis-levelezés beállítása funkció használható az adatbázis-levelezés engedélyezésére és beállítására.
Érvénytelen profil
Ennek az üzenetnek két lehetséges oka lehet. Vagy a megadott profil nem létezik, vagy a sp_send_dbmail (Transact-SQL) futtató felhasználó nem rendelkezik engedéllyel a profil eléréséhez.
Egy profil engedélyeinek ellenőrzéséhez futtassa a tárolt eljárást sysmail_help_principalprofile_sp (Transact-SQL) a profil nevével. A tárolt eljárás sysmail_add_principalprofile_sp (Transact-SQL) vagy az adatbázis-levelezés konfigurálása használatával engedélyt adhat egy msdb felhasználónak vagy csoportnak a profil eléréséhez.
Hozzáférés megtagadva az sp_send_dbmail esetében
Ez a cikk azt ismerteti, hogyan hárítható el az a hibaüzenet, amely szerint az adatbázisposta küldését megkísérlő felhasználónak nincs engedélye a végrehajtásra sp_send_dbmail
A hiba szövege a következő:
EXECUTE permission denied on object 'sp_send_dbmail',
database 'msdb', schema 'dbo'.
Az adatbázis-levelek küldéséhez a felhasználóknak az adatbázis felhasználójának és a msdb DatabaseMailUserRole adatbázis-szerepkör tagjának kell lenniük az msdb adatbázisban. Ha msdb-felhasználókat vagy csoportokat szeretne hozzáadni ehhez a szerepkörhöz, használja az SQL Server Management Studiót, vagy hajtsa végre a következő utasítást az adatbázisposta küldéséhez szükséges felhasználóra vagy szerepkörre vonatkozóan.
EXEC msdb.dbo.sp_addrolemember @rolename = 'DatabaseMailUserRole'
,@membername = '<user or role name>';
GO
További információ: sp_addrolemember és sp_droprolemember.
Az adatbázis e-mailjei várólistára kerülnek, nincsenek bejegyzések a sysmail_event_log vagy a Windows alkalmazás eseménynaplójában
A Database Mail a Service Brokerre támaszkodik az e-mailek sorba állításához. Ha a Database Mail le van állítva, vagy ha a Service Broker üzenetkézbesítés nincs aktiválva az adatbázisban, a msdb Database Mail üzenetsorokat küld az adatbázisban, de nem tudja kézbesíteni az üzeneteket. Ebben az esetben a Szolgáltatásközvetítő üzenetei a Service Broker Mail üzenetsorában maradnak. A Service Broker nem aktiválja a külső programot, így nincsenek naplóbejegyzések sysmail_event_log , és nincsenek frissítések az elem állapotáról és a kapcsolódó nézetekben sysmail_allitems .
Futtassa a következő utasítást annak ellenőrzéséhez, hogy a Service Broker engedélyezve van-e az msdb adatbázisban:
SELECT is_broker_enabled FROM sys.databases WHERE name = 'msdb';
Az érték 0 azt jelzi, hogy a Service Broker üzenetkézbesítés nincs aktiválva az msdb adatbázisban. A probléma megoldásához aktiválja a Service Brokert az adatbázisban a következő Transact-SQL paranccsal:
USE master ;
GO
ALTER DATABASE msdb SET ENABLE_BROKER ;
GO
A Database Mail számos belső tárolt eljárásra támaszkodik. A felület csökkentése érdekében ezek a tárolt eljárások le vannak tiltva az SQL Server új telepítésekor. A tárolt eljárások engedélyezéséhez használja a rendszer által tárolt eljárás Database Mail XPs (kiszolgálókonfigurációs beállítását) az sp_configure alábbi példához hasonlóan:
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'Database Mail XPs', 1;
RECONFIGURE;
EXEC sp_configure 'show advanced options', 0;
RECONFIGURE;
GO
Előfordulhat, hogy a Database Mail le van állítva az msdb adatbázisban. A Database Mail állapotának ellenőrzéséhez hajtsa végre a következő utasítást:
EXECUTE dbo.sysmail_help_status_sp;
A Database Mail egy levelezési gazdaadatbázisban való elindításához futtassa a következő parancsot az msdb adatbázisban:
EXECUTE dbo.sysmail_start_sp;
A Service Broker megvizsgálja az üzenetek párbeszédpanel-élettartamát az aktiváláskor; Ezért a Service Broker átviteli üzenetsorában a konfigurált párbeszédpanel élettartamánál hosszabb üzenetek azonnal meghiúsulnak. A Database Mail frissíti a sikertelen üzenetek állapotát a sysmail_allitems és a kapcsolódó nézetekben. El kell döntenie, hogy újra elküldi-e az e-maileket. A Database Mail által használt párbeszédpanel élettartamának konfigurálásáról további információt a sysmail_configure_sp talál.