我有一个包含所有需要的表的数据库,完全可用。但是出于测试目的,我需要制作数据库的副本,比方说100次。 (我的应用程序将在每个数据库上循环执行一些脚本)。
生成的数据库当然应该有不同的名称。要使用Backup/Restore
甚至Detach/Copy/Attach
100次是不可行的。所以我想知道是否有一个脚本可以循环以不同的名称多次复制/恢复数据库?
由于
答案 0 :(得分:0)
通过简单的 WHILE LOOP ,找到了适合我的东西;
DECLARE @index int
DECLARE @dbName varchar(25)
declare @HRNET varchar(200)
declare @HRNET_LOG varchar(200)
declare @sql varchar(2000)
SET @index = 5
WHILE (@index < 200)
BEGIN
-- Construct db name and corresponding files name
SET @dbName = 'BDName' + Right('0000' + CONVERT(NVARCHAR, @index), 4)
set @MDF = '''C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008\MSSQL\DATA\' + @dbName + '.mdf'''
SET @LDF = '''C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008\MSSQL\DATA\' + @dbName + '_1.ldf'''
-- Restore db from backup bak file
SELECT @sql = 'RESTORE DATABASE ' + @dbName + '
FROM DISK = ''C:\DB Backup\DBName1919.bak''
WITH FILE = 1,
MOVE ''WEEKLY_UK_CO_E_REPORTING_Data'' TO ' + @MDF + ',
MOVE ''WEEKLY_UK_CO_E_REPORTING_Log'' TO ' + @LDF +
', NOUNLOAD, STATS = 10'
exec(@sql)
SET @index = @index + 1
END
GO
要检索备份路径位置(MDF和LDF),只需运行以下命令;
RESTORE FILELISTONLY
FROM DISK = N'C:\DB Backup\DBName1919.bak'