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.