Je ne pense pas que quelqu'un sache si un travail d'Agent SQL Server peut demander des informations sur lui-même, comme son propre ID, ou le chemin à partir duquel il s'exécute? Je suis au courant de xp_sqlagent_enum_jobs
et sp_help_job
mais cela n'aide pas, car vous devez spécifier l'ID du travail. L'idée est que nous voulons un code que nous n'avons pas à gérer en étant capable d'appeler un sproc qui va identifier le travail en cours. Des idées?SQL Server Agent - Le travail peut-il demander des informations sur lui-même
0
A
Répondre
4
Oui, mais ce n'est pas joli.
Regardez les processus sys.sys (ou dbo.sys dans SQL 2000 et ci-dessous). Le nom du programme sera quelque chose SQL Agent avec une valeur binaire à la fin. Cette valeur binaire est la valeur binaire du guid du travail. Donc, soustrayez cette valeur et effectuez une recherche sur la table msdb.dbo.sysjobs pour savoir de quel travail il s'agit (vous devrez convertir sysjobs.job_id en varbinary (100) pour que les valeurs correspondent). Je vous ai dit que ce n'était pas joli, mais ça marchera.
0
méchant !!! mais je pense que cela pourrait fonctionner ...
par exemple. utilisé au sein de un travail - select * from msdb..sysjobs where job_id = dbo.fn_currentJobId()
faites-moi savoir.
create function dbo.fn_CurrentJobId()
returns uniqueidentifier
as
begin
declare @jobId uniqueidentifier
select @jobId = j.job_id
from master..sysprocesses s (nolock)
join msdb..sysjobs j (nolock)
on (j.job_id = SUBSTRING(s.program_name,38,2) + SUBSTRING(s.program_name,36,2) + SUBSTRING(s.program_name,34,2) + SUBSTRING(s.program_name,32,2) + '-' + SUBSTRING(s.program_name,42,2) + SUBSTRING(s.program_name,40,2) + '-' + SUBSTRING(s.program_name,46,2) + SUBSTRING(s.program_name,44,2) + '-' + SUBSTRING(s.program_name,48,4) + '-' + SUBSTRING(s.program_name,52,12))
where s.spid = @@spid
return @jobId
end
go
merci pour l'info que
Questions connexes
- 1. Sql Server 2005 SSIS/Agent - Statut de requête d'un travail
- 2. Télécharger SQL SERVER AGENT - Microsoft SQL Server
- 3. Comment puis-je planifier un travail dans Sql Agent (Sql Server 2005) via le code C#?
- 4. Agent SQL Server: Comment "dormir"?
- 5. Comment sauvegarder les jobs SQL Server Agent?
- 6. Objets utilisés par le travail SQL Server
- 7. SQL Server 2005 - en cliquant sur le travail-> Propriétés donne la fenêtre "Nouveau travail"
- 8. Microsoft SQL Studio Agent SQL Server, créez une insertion en bloc avec des paramètres dynamiques
- 9. Sql Server Étapes du travail
- 10. Utilisation de SQL Server Agent pour exécuter un package SSIS distant par programme sur le serveur
- 11. Comment créer un agent SQL Server sans utiliser d'interface graphique?
- 12. Agent SQL Server requis pour les connexions à distance?
- 13. Travail sur le serveur SQL - Le système ne trouve pas le fichier spécifié
- 14. Job SQL Server Agent - Existe-t-il ensuite?
- 15. ID des informations sur plus d'un DB/Server
- 16. Comment définir le travail SQL Server 2005 CmdExec Timeout
- 17. Résultat du travail SQL dans C#
- 18. Envoi de notifications à partir d'un travail SQL Server 2000 sans serveur SMTP sur la boîte
- 19. Programme de travail SQL Server 2005
- 20. Comment enregistrer à la fois le succès et l'échec dans le travail de l'Agent SQL Server
- 21. SQLSTATE 01000 dans la sortie de travail SQL Server
- 22. Informations sur les serveurs des services Terminal Server
- 23. Informations sur le système d'exploitation à partir d'une instance de serveur Microsoft SQL Server
- 24. Comment obtenir des informations sur les performances de la base de données SQL Server?
- 25. Où puis-je trouver des informations sur la création de plugins pour SQL Server Management Studio?
- 26. des informations sur le glisser & déposer!
- 27. sp_start_job attendez que le travail pour terminer
- 28. Journal des requêtes exécutées sur SQL Server
- 29. des informations sur UML?
- 30. OpenID - obtenir des informations sur l'utilisateur?
Eh bien, il est utile de savoir. Je vais suivre cela, j'ai couru une requête rapide et c'était assez facile à montrer. Je ne suis toujours pas capable de voir comment l'Agent SQL Server pourrait interroger un travail à propos de _itself_. Le planificateur démarrerait et un travail serait en cours, mais comment pourrait-il se demander? – Kezzer
Il n'y a aucun moyen de le savoir par soi-même, car il n'y a pas de fonction qui vous dira quel travail vous exécutez. Comme je l'ai mentionné ci-dessus, vous pouvez prendre le spid courant sous lequel le travail s'exécute, l'utiliser pour trouver la valeur binaire du nom de l'application, puis l'utiliser pour trouver le jobid correct de la table sysjobs. Cela vous permettrait ensuite d'interroger les tables d'historique des travaux pour trouver des informations sur le travail en cours. Vous pouvez même écrire une fonction pour gérer le travail de chaîne et renvoyer le jobid comme une fonction système si elle existait. – mrdenny