I'm trying to create a simple restore cursor that will be used when I have the need to restore multiple databases.
Each database have simple recovery model and all are named using the following format: DBname_AAAAMMDD_FULL
I have came up with a dynamic script that will do the job for a single istance, but it's not incrementing the data field on my cursor.
Here is what I have tried so far:
DECLARE @SQL VARCHAR(MAX)
DECLARE @DATE DATETIME = '20170926'
DECLARE @DATE_CHAR CHAR(9) = CONVERT(CHAR(9),@DATE,112)
DECLARE @DBName VARCHAR(MAX) = 'MyDB_'
DECLARE @DBFileName VARCHAR(MAX)
SELECT @DBNAME = (@DBNAME + @DATE_CHAR)
SELECT @DBName
SELECT @DBFileName = ('' + @DBNAME+'' +'_FULL_FRM.BAK') --This should match the physical file name
SELECT @DBFILENAME
WHILE (SELECT @DATE ) <= '20170930'
BEGIN
PRINT @DATE
SET @DATE = (@DATE +1)
IF (SELECT @DATE) > '20170930'
BREAK
ELSE
CONTINUE
END
And this piece of code, but haven't got either to work.
DECLARE @SQL VARCHAR(MAX)
DECLARE @DATE DATETIME = '20170926'
DECLARE @DATE2 DATETIME
DECLARE @DATE_CHAR CHAR(9) = CONVERT(CHAR(9),@DATE,112)
DECLARE @DBName VARCHAR(MAX) = 'MYDB_'
DECLARE @DBFileName VARCHAR(MAX)
SELECT @DBNAME = (@DBNAME + @DATE_CHAR)
--23 = aaaa-mm-dd
--112 = aaaammdd
SELECT @DBName
SELECT @DBFileName = ('' + @DBNAME+'' +'_FULL_FRM.BAK') --This should tch the physical file name
SELECT @DBFILENAME
DECLARE Employee_Cursor CURSOR FOR
SELECT @DATE
WHERE @DATE < '20170930'
OPEN Employee_Cursor;
FETCH NEXT FROM Employee_Cursor;
WHILE @DATE <= '20170930'
BEGIN
SELECT @DATE = @DATE+1
PRINT @DATE
FETCH NEXT FROM Employee_Cursor;
END;
CLOSE Employee_Cursor;
DEALLOCATE Employee_Cursor;
GO