0
我有一個數據庫,其中包含所有需要的表,這些數據庫完全可用。但爲了測試目的,我需要製作數據庫的副本,比如說100次。 (我的應用程序將在每個數據庫上循環執行一些腳本)。製作數據庫的副本
生成的數據庫當然應該有不同的名稱。要使用Backup/Restore
或甚至Detach/Copy/Attach
100次是不可行的。所以我想知道是否有一個腳本可以循環複製/恢復數據庫多次不同的名稱?
感謝
我有一個數據庫,其中包含所有需要的表,這些數據庫完全可用。但爲了測試目的,我需要製作數據庫的副本,比如說100次。 (我的應用程序將在每個數據庫上循環執行一些腳本)。製作數據庫的副本
生成的數據庫當然應該有不同的名稱。要使用Backup/Restore
或甚至Detach/Copy/Attach
100次是不可行的。所以我想知道是否有一個腳本可以循環複製/恢復數據庫多次不同的名稱?
感謝
好吧發現東西是爲我工作,通過簡單的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'
爲什麼你聲稱'備份/恢復'是不可能的?這可能是解決這一挑戰的最有效和最簡單的解決方案! –
我不是說它不可能,但想象做這個100-200次?!這需要一整天.. –
只需編寫腳本 - 您可以輕鬆創建'BACKUP DATABASE ...'和'RESTORE ...'作爲腳本,讓它無人值守運行..... –