LOGO

LOGO
LOGO
ads header

Breaking News

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

*/


Hiç yorum yok