MSSQL Express Sunucu üzerindeki Veritabanlarının otomatik yedeklenmesi

MSSQL veritabanı üzerinde sürekli yedeklenmesi gereken veritabanlarınız var ve bu veritabanlarınızın sayısı ve isimleri zaman içinde sürekli olarak değişirken sizin bunları günde birkaç sefer yedeklemeniz gerekiyor ama MSSQL Express kullanıyorsunuz.

Peki ama pratik olarak nasıl yapabiliriz?


DECLARE @name NVARCHAR(256) 
DECLARE @path NVARCHAR(512) 
DECLARE @fileName NVARCHAR(512) 
DECLARE @fileDate NVARCHAR(40) 
SET @path = 'D:\Database\' 
SELECT @fileDate = CONVERT(NVARCHAR(20),GETDATE(),112) 
DECLARE db_cursor CURSOR READ_ONLY FOR SELECT name FROM master.sys.databases WHERE name NOT IN ('master','model','msdb','tempdb') AND state = 0 
-- aktif olan veritabanlarını alıyoruz 
AND is_in_standby = 0 

OPEN db_cursor 
FETCH NEXT FROM db_cursor INTO @name WHILE @@FETCH_STATUS = 0 
BEGIN 
SET @fileName = @path + @fileDate+'_'+ @name + '.BAK' 
DBCC SHRINKFILE (@name) 
BACKUP DATABASE @name TO DISK = @fileName 
FETCH NEXT FROM db_cursor INTO @name 
END 
CLOSE db_cursor 
DEALLOCATE db_cursor

hazırlamış olduğunuz yukarıdaki script dosyasını bilgisayarınıza kaydedin ve

sqlcmd -S . -i "C:\scriptler\dbyedekle.sql" -U dbkulaniciniz -P şifreniz

şeklindeki bir batch dosyası ile çalıştırılabilir hale getiriniz.

daha sonra bu batch dosyanızı ister manuel olarak ya da zamanlanmış görevlere ekleyerek belirli zamanlarda çalışmasını sağlayabilirsiniz.