declare @cmd1 varchar(500)
declare @cmd2 varchar(500)
declare @cmd3 varchar(500)
declare @pre varchar(500)
set @cmd1 = 'insert into #filesinfo (db, dn, dfn )
select ''?'', [name], [filename] from [?]..sysfiles where groupid=1'
set @cmd2 = 'update #filesinfo set ln = [name], lfn =[filename]
from [?]..sysfiles sf
where sf.groupid=0 and #filesinfo.db=''?'''
set @cmd3 = 'update #filesinfo set nf = (select count(*) from [?]..sysfiles)
where #filesinfo.db=''?'''
CREATE TABLE #filesinfo (db sysname, dn sysname, ln sysname null, dfn nvarchar(500), lfn nvarchar(500) null, nf int, sa sysname null)
EXEC sp_MSforeachdb @command1=@cmd1,@command2=@cmd2, @command3=@cmd3
set @cmd1 = 'update #filesinfo set sa = (select sl.[name] from master..syslogins sl inner join [?]..sysusers su on sl.sid=su.sid where su.name=''dbo'')
where #filesinfo.db=''?'''
EXEC sp_MSforeachdb @command1=@cmd1
--EXEC sp_MSforeachdb 'insert into #filesinfo (db) select ''?'''
DELETE FROM #filesinfo
WHERE db in ('model','master','tempdb','pubs','Northwind','msdb')
--SELECT 'backup database ' + db + ' to disk=''' + db + '.bak''' FROM #filesinfo
declare @restorepath nvarchar(1024)
declare @datapath nvarchar(1024)
declare @logpath nvarchar(1024)
set @datapath = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\'
set @logpath = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\'
set @restorepath = N'C:\EdgeWeb\migrate\'
select '
RESTORE DATABASE [' + db + ']
FROM DISK = ''' + @restorepath + db + '.bak''
WITH FILE = 1
, MOVE N''' + dn + ''' TO N''' + @datapath + db + '.mdf''
, MOVE N''' + ln + ''' TO N''' + @logpath + db + '_log.ldf''
, NOUNLOAD, REPLACE, STATS = 10
GO
'
from #filesinfo
drop table #filesinfo