Gerekli minimum yapılandırma ayarları ile bir SQL Server Agent işi kullanarak bir SQL sorgusunun günlük olarak nasıl çalıştırılacağını bilmem gerekiyor.
Gerekli minimum yapılandırma ayarları ile bir SQL Server Agent işi kullanarak bir SQL sorgusunun günlük olarak nasıl çalıştırılacağını bilmem gerekiyor.
Yanıtlar:
SQL Server Agent düğümünü genişletin ve SQL Server Agent'taki İşler düğümüne sağ tıklayın ve seçin 'New Job'
Gelen 'New Job'
pencerenin işin adı ve bir açıklama girin 'General'
sekmesi.
'Steps'
Pencerenin sol tarafını seçin ve alttaki tıklayın 'New'
.
Gelen 'Steps'
pencerede bir adım ad girip sorgu karşı çalıştırmak istediğiniz veritabanını seçin.
Çalıştırmak istediğiniz T-SQL komutunu Komut penceresine yapıştırın ve tıklayın 'OK'
.
Tıklayın 'Schedule'
(örneğin günlük ve bir süre) Yeni İş penceresinin soldaki menüden ve zamanlama bilgilerini girin.
Tıklayın 'OK'
- ve bu olmalı.
(Elbette ekleyebileceğiniz başka seçenekler de var - ancak bir iş kurmak ve programlamak için ihtiyacınız olan asgari asgari budur diyebilirim)
Bunu t-sql'de yapmak için, günlük bir işi planlamak üzere aşağıdaki sistemde saklı yordamları kullanabilirsiniz. Bu örnek, her gün 01: 00'da planlanmaktadır. Ayrı ayrı saklı yordamların söz dizimi ve geçerli parametre aralığı hakkında ayrıntılar için Microsoft yardımına bakın.
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
T-SQL kullanma: İşim saklı yordamı yürütüyor. @command
Sql'nizi çalıştırmak için kolayca değiştirebilirsiniz .
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 ;
Günlük yedekleme istiyorsanız // C: \ Users \ admin \ Desktop \ DBScript \ DBBackUpSQL.sql'deki sql script deposunu takip edin
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
Görev zamanlayıcıyı açın
görev oluştur-> Triggers
sekmeyi seçin Seçin New
.
Düğme Günlük Radyoyu Seç düğmesi
Tıklama Ok
Düğmesi
ardından Action
Yeni Seç sekmesine tıklayın .
Düğme "C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE"
-S ADMIN-PC -i'yi "C:\Users\admin\Desktop\DBScript\DBBackUpSQL.sql"
program / komut dosyası metin kutusuna koyun (Dosya yolunuzu eşleştirdiğinizden emin olun ve çift tırnaklı yolu başlangıç-> arama kutusuna koyun ve bulursa tıklayın ve yedeğin orada olup olmadığını görün )
- yukarıdaki yol 100 yazma 90 başlatılabilir "C:\Program Files\Microsoft SQL Server\90\Tools\Binn\SQLCMD.EXE" -S ADMIN-PC -i
"C:\Users\admin\Desktop\DBScript\DBBackUpSQL.sql"
sonra tamam düğmesini tıklayın
Komut dosyası, günlük olarak Tetikleyici sekmesinde seçtiğiniz zamanda yürütülecektir
tadını çıkar.............
İşte örnek bir kod:
Exec sp_add_schedule
@schedule_name = N'SchedulName'
@freq_type = 1
@active_start_time = 08300