代码改变世界

调用sp_MsForEachDb 奇怪的现象

2009-10-19 16:13  superbullet  阅读(198)  评论(0)    收藏  举报

sp_MsForEachDb是sql server一个很有用的undocumented的sp。今天,我写了以下一段很简单的sql用来备份服务器客户的数据库,不知道为什么在本地机上执行没有任何问题,备份了所有"ul_开头,非_test结尾”的数据库。但是当我放到公司server上面去执行,却只备份了"ul_开头,非_test结尾“的数据库里面的最后一个!有人做过类似的东西吗?郁闷, 呵呵。

 EXEC sp_MsForEachDb @command1 = 

'

DECLARE @bk_folder varchar(max)

DECLARE @bk_path varchar(max)

DECLARE @fileName varchar(max)

DECLARE @bk_time datetime

DECLARE @fileName_suffix varchar(max)

IF CHARINDEX(''ul_'', ''?'') > 0 AND RIGHT(''?'', 5) <> ''_test''

BEGIN

PRINT ''?''

SET @bk_time = getdate()

--select @bk_time

SET @fileName_suffix = Convert(varchar(10), @bk_time, 102) + ''_'' + REPLACE(Convert(VARCHAR(8), @bk_time, 108), '':'', ''.'') + ''.bak''

SET @fileName = ''?_live'' + @fileName_suffix

--select @fileName

SET @bk_folder =  ''c:\temp\''

SET @bk_path = @bk_folder + @fileName

--SELECT @bk_path

BACKUP DATABASE ?

To DISK = @bk_path WITH COMPRESSION

END

'