Est-il possible de configurer Microsoft SQL Server pour exécuter une procédure stockée sur une base régulière?
Oui, dans MS SQL Server, vous pouvez créer des travaux planifiés. Dans SQL Management Studio, accédez au serveur, puis développez l'élément Agent SQL Server, puis le dossier Travaux pour afficher, modifier et ajouter des travaux planifiés.
Si MS SQL Server Express Edition est utilisé, SQL Server Agent n'est pas disponible. J'ai trouvé ce qui suit fonctionné pour toutes les éditions:
USE Master
GO
IF EXISTS( SELECT *
FROM sys.objects
WHERE object_id = OBJECT_ID(N'[dbo].[MyBackgroundTask]')
AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[MyBackgroundTask]
GO
CREATE PROCEDURE MyBackgroundTask
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- The interval between cleanup attempts
declare @timeToRun nvarchar(50)
set @timeToRun = '03:33:33'
while 1 = 1
begin
waitfor time @timeToRun
begin
execute [MyDatabaseName].[dbo].[MyDatabaseStoredProcedure];
end
end
END
GO
-- Run the procedure when the master database starts.
sp_procoption @ProcName = 'MyBackgroundTask',
@OptionName = 'startup',
@OptionValue = 'on'
GO
Quelques notes:
Oui, si vous utilisez l'agent SQL Server.
Ouvrez votre Enterprise Manager et accédez au dossier Management sous l’instance SQL Server qui vous intéresse. Vous y verrez l’agent SQL Server et, en dessous, une section Jobs.
Ici, vous pouvez créer un nouveau travail et vous verrez une liste des étapes que vous devrez créer. Lorsque vous créez une nouvelle étape, vous pouvez spécifier l'étape d'exécution réelle d'une procédure stockée (tapez TSQL Script). Choisissez la base de données, puis pour la section de commande, mettez quelque chose comme:
exec MyStoredProcedure
C’est l’aperçu général, postez ici si vous avez besoin de conseils supplémentaires.
[J'ai en fait pensé que je pourrais être le premier sur celui-ci, mon garçon, je me suis trompé :)]
Probablement pas la réponse que vous cherchez, mais je trouve plus utile d’utiliser simplement Planificateur de tâches Windows Server
Vous pouvez utiliser directement la commande sqlcmd.exe -S "." -d YourDataBase -Q "exec SP_YourJob"
Ou même créer un .bat
fichier. Vous pouvez donc même cliquer deux fois sur la tâche à la demande.
Ceci a également été abordé dans ce ICI
J'ajouterai une chose: à l'endroit où je me trouvais, nous avions l'habitude de travailler par lots, tous les soirs. Cependant, nous nous écartons de cela pour utiliser une application client planifiée dans des tâches planifiées Windows qui lancent chaque travail. Il y a (au moins) trois raisons à cela:
C'est une application VB.Net très courte: je peux poster du code si quelqu'un est intéressé.
Vous pouvez utiliser SQL Server Service Broker pour créer un mécanisme personnalisé.
Idée (simplifiée):
Écrivez une procédure stockée/un déclencheur qui commence une conversation ( BEGIN DIALOG ) sous forme de boucle (FROM my_service TO my_service) - récupère le gestionnaire de conversation
DECLARE @dialog UNIQUEIDENTIFIER;
BEGIN DIALOG CONVERSATION @dialog
FROM SERVICE [name]
TO SERVICE 'name'
...;
Démarrer le chronomètre de conversation
DECLARE @time INT;
BEGIN CONVERSATION TIMER (@dialog) TIMEOUT = @time;
Après un nombre de secondes spécifié, un message sera envoyé à un service. Il sera mis en file d'attente avec la file d'attente associée.
CREATE QUEUE queue_name WITH STATUS = ON, RETENTION = OFF
, ACTIVATION (STATUS = ON, PROCEDURE_NAME = <procedure_name>
, MAX_QUEUE_READERS = 20, EXECUTE AS N'dbo')
, POISON_MESSAGE_HANDLING (STATUS = ON)
La procédure exécutera un code spécifique et une minuterie récupérable pour se déclencher à nouveau.
Vous pouvez trouver une solution complètement préparée (T-SQL) écrite par Michał Gołoś appelé Planificateur de tâches
Points clés du blog:
Avantages:
Distinction proposée:
Agent SQL Server (maintenance):
Planificateur de tâches (processus métier):
Comment le configurer:
[tsks].[tsksx_task_scheduler]
pour ajouter de nouvelles tâches (les noms des colonnes sont auto-descriptifs, exemple de tâche inclus)Avertissement: le blog est écrit en polonais mais le code source associé est en anglais et il est facile à suivre.
Avertissement 2: avant de l'utiliser, assurez-vous de l'avoir testé dans un environnement autre que celui de production.
Utilisation de Management Studio - Vous pouvez créer un travail (sous SQL Server Agent). Un travail peut inclure plusieurs étapes, allant des scripts T-SQL aux packages SSIS.
Jeb était plus rapide;)
Vous devez consulter un travail planifié à l'aide de l'Agent SQL Server .