Je crée une requête pour retourner des billets qui n'ont pas été mis à jour dans l'heure requise et envoient par courrier électronique. J'ai tout ce qui fonctionne, sauf que je veux envoyer un courrier électronique à envoyer par courrier électronique aux utilisateurs dont les noms apparaissent dans les résultats de la requête.
J'ai essayé de définir le nom de l'utilisateur @ sur l'ID utilisateur et l'ajout au courrier électronique ci-dessous. Pas sûr si cela est même proche. P>
Declare @username VARCHAR(MAX)
--("query")--
Set @username =[userid]--(in query results)--
exec msdb.dbo.sp_send_dbmail
@participants ='@username+@mydomain.com'
3 Réponses :
Vous pouvez utiliser ALORS: P> truc code> avec pour le chemin XML code> pour créer un ; code> Liste délimitée pour le paramètre @Recipients code> : EXEC msdb.dbo.sp_send_dbmail
@recipients = @EmailList,
@subject = 'foo',
@body = 'bar',
etc
Stuff code> ne peut pas créer une liste délimitée. Dans votre requête, il s'agit de pour XML chemin code> business.
Vous pouvez utiliser un curseur code> pour récupérer votre liste d'adresses e-mail et envoyer le courrier électronique à cette liste: DECLARE @username AS VARCHAR(MAX) = ''
DECLARE @participants AS VARCHAR(MAX) = ''
DECLARE cursor_name CURSOR
FOR
SELECT userid
FROM YourTable
OPEN cursor_name;
FETCH NEXT
FROM cursor_name
INTO @username;
WHILE @@FETCH_STATUS = 0
BEGIN
@participants += @username + '@mydomain.com;'
FETCH NEXT FROM cursor_name
INTO @username;
END
CLOSE cursor_name;
DEALLOCATE cursor_name;
EXEC msdb.dbo.sp_send_dbmail @recipients = @participants
etc
Je reçois une erreur "syntaxe incorrecte à proximité de @Participants"
Essayez d'initialiser les deux variables comme vide; Nom d'utilisateur = '' et participants = ''
Vous pouvez utiliser Coallece pour créer une liste séparée par des points-virgules, ce qui veut que DBmail souhaite.
Merci c'est ce que je cherchais. J'utilise des jointures à partir de plusieurs tables pour faire ce travail de requête, j'ai essayé de mettre la requête dans une table Temp et de la définition ci-dessus de la lecture de cette table. Bien que cela fonctionne et envoie aux utilisateurs, il ne contient plus le reste des informations de la requête. Aucune suggestion?
Quelles autres informations essayez-vous d'inclure? Vous pouvez essayer d'expérimenter une deuxième variable qui utilise la même configuration que le nom d'utilisateur (at), mais serait (at) utilisateurs si vous voulez que ce soit de personnes dans votre requête. Si vous voulez que le corps du message soit différent pour chacun, cela devient plus compliqué. Cela nécessiterait des méthodes du curseur ou de devenir créatif avec le paramètre @query de DBmail. [link] ( docs.microsoft.com/en-us/sql/relational-databases/... )
Utilisez Cursor docs.microsoft.com/ru-ru/sql/t-sql/language-Elements/.../a>
Si vous faites cela dans le cadre d'une SPUCT, je l'obtiens. Si vous n'êtes pas, dites que vous faites cela dans le cadre d'un emploi planifié. Pensez à utiliser PowerShell. e-mailchitect.net/asendmail/kb/powershell.aspx?cat=1 < / a>
Stackoverflow.com/a/889561/1507566