複数のデータベースを復元する必要がある場合に使用される単純な復元カーソルを作成しようとしています。インクリメンタルコントロールフィールド - カーソル
各データベースは、単純復旧モデルを持っているし、すべては次の形式を使用して命名されていますDBname_AAAAMMDD_FULL
私は、単一のistanceのために仕事をする動的なスクリプトを思い付いているが、それは上のデータフィールドをインクリメントしていません私のカーソル。
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
とコードのこの部分が、動作するようにいずれかを持っていない:ここでは
は、私がこれまで試してみましたものです。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