WAITFOR DELAY ve WAITFOR TIME Kullanımı
SQL Server’da çalıştırdığımız komutları belli bir süre bekletip tekrar çalıştırabilme olanağımız vardır.
a)WAITFOR DELAY bu komutla belirlediğimiz süre kadar sonra istediğimiz komutu çalıştırabiliriz.
-- 10 saniye bekletir.
WAITFOR DELAY '00:00:10';
SELECT [KOD]
,[TANIM]
FROM [BORSA].[dbo].[NACEKOD]
-- 5 saat bekletir.
WAITFOR DELAY '05:00:00';
-- 5 saat bekletir.
WAITFOR DELAY '00:05:00';
b)WAITFOR TIME bu komutla belirlediğimiz saatte istediğimiz komutu çalıştırırız.
-- Saat 08:55 aşağıdaki komut çalışır.
WAITFOR TIME '08:55';
SELECT [KOD]
,[TANIM]
FROM [BORSA].[dbo].[NACEKOD]
Biz bu komutlarla zamanlanmış görevler yapabiliriz.
Yedek almak istiyorsunuz...Bunu bu komutlarla zamanlayabilirsiniz.
DECLARE @return_value int
WAITFOR TIME '08:55';
EXEC @return_value = [dbo].[sp_BackupAllDatabase]
@backupType = N'F',
@backupFolder = N'D:\SANALDRIVE\'
SELECT 'Return Value' = @return_value
Örnek Yedekleme:
Create PROCEDURE [dbo].[sp_BackupAllDatabase]
@backupType CHAR(1),
@backupFolder VARCHAR(150)
AS
BEGIN
DECLARE @dayOfWeek int
DECLARE @dayNameOfWeek varchar(10)
DECLARE @name VARCHAR(50) -- database name
DECLARE @fileName VARCHAR(256) -- filename for backup
DECLARE @fileDate VARCHAR(20) -- used for file name
-- specify filename format (Dosya adi icin tarih olustur)
SELECT @fileDate = CONVERT(VARCHAR(20), GETDATE(), 112)
SET @dayOfWeek = DATEPART(weekday ,GETDATE())
SET @dayNameOfWeek = UPPER(DATENAME(weekday, GETDATE()))
DECLARE db_cursor CURSOR FOR
SELECT name
FROM master.dbo.sysdatabases
WHERE name NOT IN ('master','model','msdb','tempdb') -- exclude these databases (bu DB leri hariç bırak)
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
IF @backupType = 'F'
BEGIN
SET @fileName = @backupFolder + @name + '_' + @fileDate + '_FULL.BAK'
BACKUP DATABASE @name TO DISK = @fileName
END
IF @backupType = 'D'
BEGIN
SET @fileName = @backupFolder + @name + '_' + @fileDate + '_DIFF.BAK'
BACKUP DATABASE @name TO DISK = @fileName WITH DIFFERENTIAL
END
IF @backupType = 'W'
BEGIN
IF @dayOfWeek = 2 -- Pazartesi günüyse
BEGIN
SET @fileName = @backupFolder + @name + '_' + @dayNameOfWeek + '_FULL.BAK'
BACKUP DATABASE @name TO DISK = @fileName
END ELSE
BEGIN
SET @fileName = @backupFolder + @name + '_' + @dayNameOfWeek + '_DIFF.BAK'
BACKUP DATABASE @name TO DISK = @fileName WITH DIFFERENTIAL
END
END
FETCH NEXT FROM db_cursor INTO @name
END
CLOSE db_cursor
DEALLOCATE db_cursor
END
/*
USE [master]
GO
DECLARE @return_value int
EXEC @return_value = [dbo].[sp_BackupAllDatabase]
@backupType = N'F',
@backupFolder = N'D:\BORSA\MSSQLDATA\BACKUP\'
SELECT 'Return Value' = @return_value
GO
*/
a)WAITFOR DELAY bu komutla belirlediğimiz süre kadar sonra istediğimiz komutu çalıştırabiliriz.
-- 10 saniye bekletir.
WAITFOR DELAY '00:00:10';
SELECT [KOD]
,[TANIM]
FROM [BORSA].[dbo].[NACEKOD]
-- 5 saat bekletir.
WAITFOR DELAY '05:00:00';
-- 5 saat bekletir.
WAITFOR DELAY '00:05:00';
b)WAITFOR TIME bu komutla belirlediğimiz saatte istediğimiz komutu çalıştırırız.
-- Saat 08:55 aşağıdaki komut çalışır.
WAITFOR TIME '08:55';
SELECT [KOD]
,[TANIM]
FROM [BORSA].[dbo].[NACEKOD]
Biz bu komutlarla zamanlanmış görevler yapabiliriz.
Yedek almak istiyorsunuz...Bunu bu komutlarla zamanlayabilirsiniz.
DECLARE @return_value int
WAITFOR TIME '08:55';
EXEC @return_value = [dbo].[sp_BackupAllDatabase]
@backupType = N'F',
@backupFolder = N'D:\SANALDRIVE\'
SELECT 'Return Value' = @return_value
Örnek Yedekleme:
Create PROCEDURE [dbo].[sp_BackupAllDatabase]
@backupType CHAR(1),
@backupFolder VARCHAR(150)
AS
BEGIN
DECLARE @dayOfWeek int
DECLARE @dayNameOfWeek varchar(10)
DECLARE @name VARCHAR(50) -- database name
DECLARE @fileName VARCHAR(256) -- filename for backup
DECLARE @fileDate VARCHAR(20) -- used for file name
-- specify filename format (Dosya adi icin tarih olustur)
SELECT @fileDate = CONVERT(VARCHAR(20), GETDATE(), 112)
SET @dayOfWeek = DATEPART(weekday ,GETDATE())
SET @dayNameOfWeek = UPPER(DATENAME(weekday, GETDATE()))
DECLARE db_cursor CURSOR FOR
SELECT name
FROM master.dbo.sysdatabases
WHERE name NOT IN ('master','model','msdb','tempdb') -- exclude these databases (bu DB leri hariç bırak)
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
IF @backupType = 'F'
BEGIN
SET @fileName = @backupFolder + @name + '_' + @fileDate + '_FULL.BAK'
BACKUP DATABASE @name TO DISK = @fileName
END
IF @backupType = 'D'
BEGIN
SET @fileName = @backupFolder + @name + '_' + @fileDate + '_DIFF.BAK'
BACKUP DATABASE @name TO DISK = @fileName WITH DIFFERENTIAL
END
IF @backupType = 'W'
BEGIN
IF @dayOfWeek = 2 -- Pazartesi günüyse
BEGIN
SET @fileName = @backupFolder + @name + '_' + @dayNameOfWeek + '_FULL.BAK'
BACKUP DATABASE @name TO DISK = @fileName
END ELSE
BEGIN
SET @fileName = @backupFolder + @name + '_' + @dayNameOfWeek + '_DIFF.BAK'
BACKUP DATABASE @name TO DISK = @fileName WITH DIFFERENTIAL
END
END
FETCH NEXT FROM db_cursor INTO @name
END
CLOSE db_cursor
DEALLOCATE db_cursor
END
/*
USE [master]
GO
DECLARE @return_value int
EXEC @return_value = [dbo].[sp_BackupAllDatabase]
@backupType = N'F',
@backupFolder = N'D:\BORSA\MSSQLDATA\BACKUP\'
SELECT 'Return Value' = @return_value
GO
*/
Hiç yorum yok