Я пишу план обслуживания, в котором базы данных будут отключены, после чего содержимое папки, в которой они находились, будет перемещено на другой диск для архивирования.
declare @db varchar(500), @path varchar(max), @SQL varchar(max)
declare u_cur cursor fast_forward for
select name, [filename] from #DbsToBeDetached
open u_cur
fetch next from u_cur into @db, @path
while (@@FETCH_STATUS = 0)
begin
SET @SQL = 'ALTER DATABASE ' + @db + ' SET SINGLE_USER WITH ROLLBACK IMMEDIATE;'
EXEC(@SQL)
EXEC sp_detach_db @db, 'true';
set @path = MagicFunction(@path)
exec sp_xp_cmdshell 'move /Y "' + @path + '" "e:\archive\"' + @db + '"'
fetch next from u_cur into @db, @path
end
close u_cur
deallocate u_cur
Единственное, на чем я застрял, это то, что я делаю, когда написано MagicFunction
, чтобы повернуть путь как
D:\data\conversions\wi_sql2005\30950 example database\30950_data.mdf
до
D:\data\conversions\wi_sql2005\30950 example database