-- LosaDev 2019: restores LosaGame, LosaGame_log, LosaLogData and Backup from backup.sql files. -- sqlcmd -S -E -v BACKUP_DIR="D:\LosaBackup" STAMP="20261107_1400" -i restore.sql (or restore.bat) -- STAMP = the yyyyMMdd_HHmm part of the file names. STOP ALL GAME SERVERS FIRST: each database is -- set to single user and replaced. The files go back to the paths stored in the backup, so restore -- on the same server; on another server use RESTORE ... WITH MOVE by hand (see README.md). USE [master] GO SET NOCOUNT ON DECLARE @dir nvarchar(400) = N'$(BACKUP_DIR)', @stamp nvarchar(20) = N'$(STAMP)', @db sysname, @file nvarchar(600), @sql nvarchar(400) 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 SET @file = @dir + N'\' + @db + N'_' + @stamp + N'.bak' IF DB_ID(@db) IS NOT NULL BEGIN SET @sql = N'ALTER DATABASE ' + QUOTENAME(@db) + N' SET SINGLE_USER WITH ROLLBACK IMMEDIATE' EXEC (@sql) END RESTORE DATABASE @db FROM DISK = @file WITH REPLACE, CHECKSUM SET @sql = N'ALTER DATABASE ' + QUOTENAME(@db) + N' SET MULTI_USER' EXEC (@sql) PRINT 'restored ' + @db + ' from ' + @file FETCH NEXT FROM d INTO @db END CLOSE d DEALLOCATE d GO