Jump to content

DB Trigger zum Versand von Mails mit sp_send_dbmail


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo zusammen,

 

habe mich nun nach einigen Jahren "mitlesen" auch endlich mal registriert. Freue mich schon auf die Beiträge, die ich vllt. auch beisteuern kann.

 

Momentan plagt mich das folgende Szenario:

 

Es handelt sich um eine .NET Anwendung eines Herstellers, wo ich nicht an alle Ecken herankomme.

Grundsätzlich unterstützt das System den Versand von E-Mails, allerdings ohne Anhänge.

 

Jetzt habe ich aus einem Workflowschritt heraus die Möglichkeit SQL-Statements auszuführen. Ich habe also die zu verschickende Mail in eine Tabelle eingefügt.

 

Hier liegt nun ein Trigger, der es mir erlaubt diese E-Mail mit der sp_send_dbmail vom SQL2008 zu versenden.

 

In meiner Entwicklungsumgebung funktioniert dies soweit Problemlos, da App-Server und DB-Server auf dem gleichen Server laufen.

Beim Kunden sind es zwei Server.

 

Um nun aber Attachments vom SQL-Server zu versenden habe ich eine Freigabe, um vom SQL-Server an die Attachments heranzukommen.

 

Die Anwendung authentifiziert sich mit SQL-Server-Auth am SQL-Server.

Wenn ich nun über die Anwendung versuche eine Mail zu verschicken erhalte ich die folgende Meldung:

The client connection security context could not be impersonated. Attaching files require an integrated client login

 

Nach ein wenig googlen bin ich darauf gekommen den EXEC-Befehl der meine Mail verschicken soll aus dem Trigger in eine SP umzuziehen, da ich hier die Möglichkeit habe EXECUTE AS zu verwenden.

 

Auszug der SP:

CREATE procedure [dbo].[sende_mail](@EMPFAENGER varchar(1000), @TEXT varchar(1000), @BETREFF varchar(1000), @ATTACHMENT varchar(1000) )
with execute as 'dbo'
AS
begin
EXEC msdb.dbo.sp_send_dbmail
               @profile_name 
.....

 

Nun habe ich allerdings das Problem, dass ich diese Meldung bekomme:

Die EXECUTE-Berechtigung wurde für das 'sp_send_dbmail'-Objekt, 'msdb'-Datenbank, 'dbo'-Schema, verweigert

 

Dem User fehlt mit Sicherheit noch irgendwo ein Recht. Habe schon viel rumprobiert aber bis jetzt bin ich nicht so richtig fündig geworden.

 

Ich bedanke mich im Voraus.

 

Robert.

Link zu diesem Kommentar

Moin,

 

um einem User an einer Prozedur das Ausführen Recht zu gewähren führst Du folgendes SQL-Statement aus:

 

(hier z.B. für die Rolle public):

 

USE msdb

GRANT EXECUTE ON dbo.sp_send_dbmail TO public

 

Alternativ über den Manager die Prozedur suchen - Eigenschaften - Berechtigungen - dort die entsprechenden Haken setzen.

Ob das jetzt bei System-Prozeduren die korrekte Vorgehensweise ist oder ob es gerade für Mail-Profile eine andere Vorgehensweise gibt, weiß ich leider nicht.

 

Gruß Kai

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...