--通用資料庫還原腳本 --指定還原位置 DECLARE @targetFolder NVARCHAR(300)=N'd:\data\sql\MSSQL12.SQL2014\MSSQL\DATA' --指定需要還原的資料庫 SELECT * INTO #t FROM ( SELECT 'ZY_Clo... ...
--通用資料庫還原腳本
--指定還原位置
DECLARE @targetFolder NVARCHAR(300)=N'd:\data\sql\MSSQL12.SQL2014\MSSQL\DATA'
--指定需要還原的資料庫
SELECT *
INTO #t
FROM ( SELECT 'ZY_Cloud_Main' dbName , --新資料庫名
N'E:\temp\ZY_Cloud_Main_LogBackup_2017-07-06_16-36-03.bak' bakName --備份文件名
UNION ALL
SELECT 'ZY_Cloud_FS' ,
N'E:\temp\fs20170801.bak'
UNION ALL
SELECT 'ZY_Cloud_Health' ,
N'E:\temp\ZY_Cloud_Health_LogBackup_2017-07-06_16-37-00.bak'
UNION ALL
SELECT 'ZY_Cloud_BM' ,
N'E:\temp\ZY_Cloud_BM_LogBackup_2017-07-06_16-37-35.bak'
) t;
CREATE TABLE #allFile
(
[DBName] NVARCHAR(100) ,
[LogicalName] NVARCHAR(128) ,
[PhysicalName] NVARCHAR(260)
);
CREATE TABLE #fileListTable
(
[LogicalName] NVARCHAR(128) ,
[PhysicalName] NVARCHAR(260) ,
[Type] CHAR(1) ,
[FileGroupName] NVARCHAR(128) ,
[Size] NUMERIC(20, 0) ,
[MaxSize] NUMERIC(20, 0) ,
[FileID] BIGINT ,
[CreateLSN] NUMERIC(25, 0) ,
[DropLSN] NUMERIC(25, 0) ,
[UniqueID] UNIQUEIDENTIFIER ,
[ReadOnlyLSN] NUMERIC(25, 0) ,
[ReadWriteLSN] NUMERIC(25, 0) ,
[BackupSizeInBytes] BIGINT ,
[SourceBlockSize] INT ,
[FileGroupID] INT ,
[LogGroupGUID] UNIQUEIDENTIFIER ,
[DifferentialBaseLSN] NUMERIC(25, 0) ,
[DifferentialBaseGUID] UNIQUEIDENTIFIER ,
[IsReadOnly] BIT ,
[IsPresent] BIT ,
[TDEThumbprint] VARBINARY(32) -- remove this column if using SQL 2005
);
DECLARE @sql NVARCHAR(MAX)= '';
DECLARE @dbName VARCHAR(200);
WHILE EXISTS ( SELECT 1
FROM #t )
BEGIN
SELECT TOP 1
@dbName = dbName
FROM #t;
SELECT @sql = dbo.f_format_s2('INSERT INTO #fileListTable EXEC
( ''restore filelistonly from disk=N''''{1}'''' WITH FILE=1''
);
', dbName, bakName)
FROM #t
WHERE dbName = @dbName;
EXECUTE( @sql);
INSERT INTO #allFile
( DBName ,
LogicalName ,
PhysicalName
)
SELECT @dbName ,
LogicalName ,
PhysicalName
FROM #fileListTable;
SET @sql = '';
SELECT @sql = @sql + dbo.f_format_s4('MOVE N''{0}'' TO N''{2}\{1}'',',
LogicalName,
dbo.f_split_index(PhysicalName,
'\', -1),
@targetFolder,
'')
FROM #fileListTable;
SELECT @sql = dbo.f_format_s4(' EXEC msdb.dbo.sp_delete_database_backuphistory @database_name = N''{0}'';
ALTER DATABASE [{0}] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
DROP DATABASE [{0}];
RESTORE DATABASE [{0}] FROM DISK = N''{1}'' WITH FILE = 1, {2} NOUNLOAD, STATS = 5;
', dbName, bakName, @sql, '')
FROM #t
WHERE dbName = @dbName;
EXECUTE(@sql);
DELETE FROM #fileListTable;
DELETE FROM #t
WHERE dbName = @dbName;
END;
--SELECT *
--FROM #allFile;
DROP TABLE #t;
DROP TABLE #allFile;
DROP TABLE #fileListTable;
輸出:
(4 行受影響)
(2 行受影響)
(2 行受影響)
已處理百分之 6。
已處理百分之 10。
已處理百分之 15。
已處理百分之 21。
已處理百分之 25。
已處理百分之 30。
已處理百分之 36。
已處理百分之 40。
已處理百分之 45。
已處理百分之 51。
已處理百分之 55。
已處理百分之 60。
已處理百分之 66。
已處理百分之 70。
已處理百分之 75。
已處理百分之 81。
已處理百分之 85。
已處理百分之 90。
已處理百分之 95。
已處理百分之 100。
已為資料庫 'ZY_Cloud_Main',文件 'Main' (位於文件 1 上)處理了 528 頁。
已為資料庫 'ZY_Cloud_Main',文件 'Main_log' (位於文件 1 上)處理了 3 頁。
RESTORE DATABASE 成功處理了 531 頁,花費 1.662 秒(2.493 MB/秒)。
(2 行受影響)
(1 行受影響)
(2 行受影響)
(2 行受影響)
已處理百分之 6。
已處理百分之 11。
已處理百分之 15。
已處理百分之 20。
已處理百分之 27。
已處理百分之 31。
已處理百分之 36。
已處理百分之 40。
已處理百分之 45。
已處理百分之 52。
已處理百分之 56。
已處理百分之 61。
已處理百分之 65。
已處理百分之 70。
已處理百分之 77。
已處理百分之 81。
已處理百分之 86。
已處理百分之 90。
已處理百分之 95。
已處理百分之 100。
已為資料庫 'ZY_Cloud_FS',文件 'YC_Qloud_Front' (位於文件 1 上)處理了 352 頁。
已為資料庫 'ZY_Cloud_FS',文件 'YC_Qloud_Front_log' (位於文件 1 上)處理了 2 頁。
RESTORE DATABASE 成功處理了 354 頁,花費 0.125 秒(22.066 MB/秒)。
(2 行受影響)
(1 行受影響)
(3 行受影響)
(3 行受影響)
已處理百分之 6。
已處理百分之 13。
已處理百分之 20。
已處理百分之 27。
已處理百分之 33。
已處理百分之 40。
已處理百分之 47。
已處理百分之 54。
已處理百分之 61。
已處理百分之 67。
已處理百分之 74。
已處理百分之 81。
已處理百分之 88。
已處理百分之 94。
已處理百分之 100。
已為資料庫 'ZY_Cloud_Health',文件 'ZY_Cloud_Health' (位於文件 1 上)處理了 1632 頁。
已為資料庫 'ZY_Cloud_Health',文件 'ZY_Cloud_Health_log' (位於文件 1 上)處理了 7 頁。
已為資料庫 'ZY_Cloud_Health',文件 'PositioningData' (位於文件 1 上)處理了 2 頁。
RESTORE DATABASE 成功處理了 1640 頁,花費 0.260 秒(49.278 MB/秒)。
(3 行受影響)
(1 行受影響)
(2 行受影響)
(2 行受影響)
已處理百分之 5。
已處理百分之 11。
已處理百分之 17。
已處理百分之 20。
已處理百分之 26。
已處理百分之 32。
已處理百分之 35。
已處理百分之 41。
已處理百分之 47。
已處理百分之 50。
已處理百分之 56。
已處理百分之 62。
已處理百分之 65。
已處理百分之 71。
已處理百分之 77。
已處理百分之 80。
已處理百分之 86。
已處理百分之 91。
已處理百分之 97。
已處理百分之 100。
已為資料庫 'ZY_Cloud_BM',文件 'BM' (位於文件 1 上)處理了 4312 頁。
已為資料庫 'ZY_Cloud_BM',文件 'BM_log' (位於文件 1 上)處理了 3 頁。
RESTORE DATABASE 成功處理了 4315 頁,花費 16.692 秒(2.019 MB/秒)。
(2 行受影響)
(1 行受影響)