Ho bisogno di sapere come eseguire quotidianamente una query SQL utilizzando un lavoro di SQL Server Agent, con impostazioni di configurazione minime richieste.
Ho bisogno di sapere come eseguire quotidianamente una query SQL utilizzando un lavoro di SQL Server Agent, con impostazioni di configurazione minime richieste.
Risposte:
Espandere il nodo SQL Server Agent e fare clic con il pulsante destro del mouse sul nodo Processi in SQL Server Agent e selezionare 'New Job'
Nella 'New Job'
finestra immettere il nome del lavoro e una descrizione nella 'General'
scheda.
Seleziona 'Steps'
sul lato sinistro della finestra e fai clic su 'New'
in basso.
Nella 'Steps'
finestra immettere un nome di passaggio e selezionare il database su cui eseguire la query.
Incolla il comando T-SQL che desideri eseguire nella finestra dei comandi e fai clic 'OK'
.
Fare clic sul 'Schedule'
menu a sinistra della finestra Nuovo lavoro e immettere le informazioni sulla pianificazione (ad esempio, ogni giorno e un orario).
Fare clic su 'OK'
- e dovrebbe essere così.
(Ci sono ovviamente altre opzioni che puoi aggiungere, ma direi che è il minimo indispensabile per ottenere un lavoro impostato e pianificato)
A tale scopo in t-sql, è possibile utilizzare le seguenti procedure memorizzate di sistema per pianificare un lavoro quotidiano. Questo esempio pianifica ogni giorno all'1: 00. Vedere la guida di Microsoft per i dettagli sulla sintassi delle singole stored procedure e sulla gamma di parametri valida.
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
Utilizzo di T-SQL: il mio lavoro sta eseguendo la stored procedure. Puoi cambiare facilmente @command
per eseguire il tuo 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 ;
Ecco un codice di esempio:
Exec sp_add_schedule
@schedule_name = N'SchedulName'
@freq_type = 1
@active_start_time = 08300
se si desidera un backup giornaliero // seguendo l'archivio di script SQL in 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
apri l'utilità di pianificazione
crea attività-> seleziona Triggers
scheda Seleziona New
.
Pulsante Seleziona il pulsante radio giornaliero
fare clic sul Ok
pulsante
quindi fare clic su Action
scheda Seleziona nuovo.
Pulsante Metti "C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE"
-S ADMIN-PC -i "C:\Users\admin\Desktop\DBScript\DBBackUpSQL.sql"
nella casella di testo del programma / script (assicurati di Match your files path e Put the double quoted path in start-> search box and if it find then click it and see the backup is there or not )
- il percorso sopra può essere invece 100 scrivi 90 "C:\Program Files\Microsoft SQL Server\90\Tools\Binn\SQLCMD.EXE" -S ADMIN-PC -i
"C:\Users\admin\Desktop\DBScript\DBBackUpSQL.sql"
quindi fare clic sul pulsante ok
lo script verrà eseguito all'orario selezionato nella scheda Trigger su base giornaliera
divertirsi.............