日期:2014-05-17  浏览次数:20454 次

批量更改存储过称
原因是这样的,由于服务器的原因,必须把数据库改个名字,原来叫KIDDB
改名后是 s04235db
但原来数据库里面大部分存储过程的 from语句后面都是这样写的

FROM [KIDDB].[dbo].[CityandSchoolReiong]

改了数据库名字以后大部分存储过程都会有错
所以问下各位大哥,有没有什么方法在更改数据库名字的时候,把相关名字去全部改了

或者能写个 语句批量的更把所有存储过程中 [KIDDB]改为[s04235db]

批量去掉也行

------解决方案--------------------
SQL code

declare @var table ( t1 nvarchar(max))
declare @str varchar(max)
declare @proname varchar(max)
declare pro cursor for
select name  from sys.objects where type='P' and is_ms_shipped<>1
open pro
fetch next from pro into @proname
while @@fetch_status=0
begin
    set @str=''
    delete from @var
    insert into @var
    exec('sp_helptext '+@proname+'')
    select @str=@str+REPlACE(REPLACE(t1,'CREATE PR','ALTER PR'),'KIDDB','s04235db')+CHAR(10) from @var
    print  (@str)--使用时改成exec  (@str)--自己先测试下
    fetch next from pro into @proname
end
CLOSE pro
DEALLOCATE pro