Files

26 lines
1.1 KiB
Transact-SQL

-- LosaDev 2014: full backup of LosaGame, LosaGame_log, LosaLogData and Backup.
-- sqlcmd -S <server> -E -v BACKUP_DIR="D:\LosaBackup" -i backup.sql (or backup.bat)
-- One file per database: <db>_yyyyMMdd_HHmm.bak in BACKUP_DIR (the folder must exist and the SQL
-- Server service account needs write access). Online backup: the servers may keep running.
USE [master]
GO
SET NOCOUNT ON
DECLARE @dir nvarchar(400) = N'$(BACKUP_DIR)', @stamp nvarchar(20) = FORMAT(GETDATE(), 'yyyyMMdd_HHmm'), @db sysname, @file nvarchar(600)
IF RIGHT(@dir, 1) = N'\' SET @dir = LEFT(@dir, LEN(@dir) - 1)
DECLARE d CURSOR LOCAL FAST_FORWARD FOR SELECT v FROM (VALUES (N'LosaGame'), (N'LosaGame_log'), (N'LosaLogData'), (N'Backup')) t(v)
OPEN d
FETCH NEXT FROM d INTO @db
WHILE @@FETCH_STATUS = 0
BEGIN
IF DB_ID(@db) IS NOT NULL
BEGIN
SET @file = @dir + N'\' + @db + N'_' + @stamp + N'.bak'
BACKUP DATABASE @db TO DISK = @file WITH INIT, CHECKSUM, STATS = 25
PRINT 'backup ' + @db + ' -> ' + @file
END
ELSE PRINT 'skip ' + @db + ' (does not exist)'
FETCH NEXT FROM d INTO @db
END
CLOSE d
DEALLOCATE d
GO