我正在编写一个维护计划,在该维护计划中数据库将被分离,然后将其驻留的文件夹的内容移至另一个驱动器进行归档。从路径中删除文件名
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
逻辑倒退,因为我需要的路径不是文件,但我认为这将工作。 –
我认为你正在做相反的事情。 OP希望PATH减去文件名。 –
我在99%的地方编辑了你的答案,但你给了/ 5分钟后我会接受的错误的一面。 –