J'ai besoin de savoir comment exécuter une requête SQL quotidiennement à l'aide d'un travail de l'Agent SQL Server, avec les paramètres de configuration minimum requis.
J'ai besoin de savoir comment exécuter une requête SQL quotidiennement à l'aide d'un travail de l'Agent SQL Server, avec les paramètres de configuration minimum requis.
Réponses:
Développez le nœud SQL Server Agent et cliquez avec le bouton droit sur le nœud Jobs dans SQL Server Agent et sélectionnez 'New Job'
Dans la 'New Job'
fenêtre, entrez le nom du travail et une description dans l' 'General'
onglet.
Sélectionnez 'Steps'
sur le côté gauche de la fenêtre et cliquez 'New'
en bas.
Dans la 'Steps'
fenêtre, entrez un nom d'étape et sélectionnez la base de données sur laquelle vous souhaitez exécuter la requête.
Collez la commande T-SQL que vous souhaitez exécuter dans la fenêtre de commande et cliquez sur 'OK'
.
Cliquez sur le 'Schedule'
menu à gauche de la fenêtre Nouvelle tâche et entrez les informations de planification (par exemple, un jour et une heure).
Cliquez 'OK'
- et cela devrait être tout.
(Il y a bien sûr d'autres options que vous pouvez ajouter - mais je dirais que c'est le strict minimum dont vous avez besoin pour obtenir un travail configuré et planifié)
Pour ce faire dans t-sql, vous pouvez utiliser les procédures stockées système suivantes pour planifier un travail quotidien. Cet exemple est programmé tous les jours à 1h00. Consultez l'aide de Microsoft pour plus de détails sur la syntaxe des procédures stockées individuelles et la plage de paramètres valide.
DECLARE @job_name NVARCHAR(128), @description NVARCHAR(512), @owner_login_name NVARCHAR(128), @database_name NVARCHAR(128);
SET @job_name = N'Some Title';
SET @description = N'Periodically do something';
SET @owner_login_name = N'login';
SET @database_name = N'Database_Name';
-- Delete job if it already exists:
IF EXISTS(SELECT job_id FROM msdb.dbo.sysjobs WHERE (name = @job_name))
BEGIN
EXEC msdb.dbo.sp_delete_job
@job_name = @job_name;
END
-- Create the job:
EXEC msdb.dbo.sp_add_job
@job_name=@job_name,
@enabled=1,
@notify_level_eventlog=0,
@notify_level_email=2,
@notify_level_netsend=2,
@notify_level_page=2,
@delete_level=0,
@description=@description,
@category_name=N'[Uncategorized (Local)]',
@owner_login_name=@owner_login_name;
-- Add server:
EXEC msdb.dbo.sp_add_jobserver @job_name=@job_name;
-- Add step to execute SQL:
EXEC msdb.dbo.sp_add_jobstep
@job_name=@job_name,
@step_name=N'Execute SQL',
@step_id=1,
@cmdexec_success_code=0,
@on_success_action=1,
@on_fail_action=2,
@retry_attempts=0,
@retry_interval=0,
@os_run_priority=0,
@subsystem=N'TSQL',
@command=N'EXEC my_stored_procedure; -- OR ANY SQL STATEMENT',
@database_name=@database_name,
@flags=0;
-- Update job to set start step:
EXEC msdb.dbo.sp_update_job
@job_name=@job_name,
@enabled=1,
@start_step_id=1,
@notify_level_eventlog=0,
@notify_level_email=2,
@notify_level_netsend=2,
@notify_level_page=2,
@delete_level=0,
@description=@description,
@category_name=N'[Uncategorized (Local)]',
@owner_login_name=@owner_login_name,
@notify_email_operator_name=N'',
@notify_netsend_operator_name=N'',
@notify_page_operator_name=N'';
-- Schedule job:
EXEC msdb.dbo.sp_add_jobschedule
@job_name=@job_name,
@name=N'Daily',
@enabled=1,
@freq_type=4,
@freq_interval=1,
@freq_subday_type=1,
@freq_subday_interval=0,
@freq_relative_interval=0,
@freq_recurrence_factor=1,
@active_start_date=20170101, --YYYYMMDD
@active_end_date=99991231, --YYYYMMDD (this represents no end date)
@active_start_time=010000, --HHMMSS
@active_end_time=235959; --HHMMSS
Utilisation de T-SQL: mon travail exécute une procédure stockée. Vous pouvez facilement changer @command
pour exécuter votre sql.
EXEC msdb.dbo.sp_add_job
@job_name = N'MakeDailyJob',
@enabled = 1,
@description = N'Procedure execution every day' ;
EXEC msdb.dbo.sp_add_jobstep
@job_name = N'MakeDailyJob',
@step_name = N'Run Procedure',
@subsystem = N'TSQL',
@command = 'exec BackupFromConfig';
EXEC msdb.dbo.sp_add_schedule
@schedule_name = N'Everyday schedule',
@freq_type = 4, -- daily start
@freq_interval = 1,
@active_start_time = '230000' ; -- start time 23:00:00
EXEC msdb.dbo.sp_attach_schedule
@job_name = N'MakeDailyJob',
@schedule_name = N'Everyday schedule' ;
EXEC msdb.dbo.sp_add_jobserver
@job_name = N'MakeDailyJob',
@server_name = @@servername ;
Voici un exemple de code:
Exec sp_add_schedule
@schedule_name = N'SchedulName'
@freq_type = 1
@active_start_time = 08300
si vous voulez une sauvegarde quotidienne // suivant le magasin de scripts sql dans C: \ Users \ admin \ Desktop \ DBScript \ DBBackUpSQL.sql
DECLARE @pathName NVARCHAR(512),
@databaseName NVARCHAR(512) SET @databaseName = 'Databasename' SET @pathName = 'C:\DBBackup\DBData\DBBackUp' + Convert(varchar(8), GETDATE(), 112) + '_' + Replace((Convert(varchar(8), GETDATE(), 108)),':','-')+ '.bak' BACKUP DATABASE @databaseName TO DISK = @pathName WITH NOFORMAT,
INIT,
NAME = N'',
SKIP,
NOREWIND,
NOUNLOAD,
STATS = 10
GO
ouvrir le planificateur de tâches
créer une tâche-> sélectionner l' Triggers
onglet Sélectionner New
.
Bouton Sélectionner le bouton radio quotidien
cliquez sur le Ok
bouton
puis cliquez sur l' Action
onglet Sélectionnez Nouveau.
Bouton Mettez "C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE"
-S ADMIN-PC -i "C:\Users\admin\Desktop\DBScript\DBBackUpSQL.sql"
dans la zone de texte du programme / script (assurez-vous de faire correspondre le chemin de vos fichiers et de mettre le chemin entre guillemets dans la zone de démarrage-> de recherche et s'il trouve, cliquez dessus et voyez la sauvegarde est là ou non )
- le chemin ci-dessus peut être installé 100 écriture 90 "C:\Program Files\Microsoft SQL Server\90\Tools\Binn\SQLCMD.EXE" -S ADMIN-PC -i
"C:\Users\admin\Desktop\DBScript\DBBackUpSQL.sql"
puis cliquez sur le bouton OK
le script s'exécutera à l'heure que vous sélectionnez sur l'onglet Déclenchement sur une base quotidienne
Profitez-en.............