打印本文 打印本文 关闭窗口 关闭窗口
浅析SQL SERVER一个没有公开的存储过程
作者:武汉SEO闵涛  文章来源:敏韬网  点击数2485  更新时间:2007/11/14 10:59:52  文章录入:mintao  责任编辑:mintao
ForEach cursor global for select ''''''''['''''''' + REPLACE(user_name(uid), N'''''''']'''''''', N'''''''']]'''''''') + '''''''']'''''''' + ''''''''.'''''''' + ''''''''['''''''' +

REPLACE(object_name(id), N'''''''']'''''''', N'''''''']]'''''''') + '''''''']'''''''' from dbo.sysobjects o ''''
        + N'''' where OBJECTPROPERTY(o.id,
N''''''''''''+@isobject+'''''''''''') = 1 ''''+N'''' and o.category & '''' + @mscat + N'''' = 0 ''''
       + @whereand)

 declare @retval int
 select @retval = @@error
 if (@retval = 0)
  exec @retval = sp_MSforeach_worker @command1, @replacechar, @command2, @command3

 if (@retval = 0 and @postcommand is not null)
  exec(@postcommand)

 return @retval

GO
这样我们来测试一下:
1.获得所有的存储过程的脚本:
         EXEc sp_MSforeachObject @command1="sp_helptext ''''?'''' ",@objectType=4
2.获得所有的视图的脚本:
         EXEc sp_MSforeachObject @command1="sp_helptext ''''?'''' ",@objectType=2
3.比如在开发过程中,没一个用户都是自己的OBJECT OWNER,所以在真实的数据库时都要改为DBO:
           EXEc sp_MSforeachObject @command1="sp_changeobjectowner ''''?'''', ''''dbo''''",@objectType=1
           EXEc sp_MSforeachObject @command1="sp_changeobjectowner ''''?'''', ''''dbo''''",@objectType=2
            EXEc sp_MSforeachObject @command1="sp_changeobjectowner ''''?'''', ''''dbo''''",@objectType=3
              EXEc sp_MSforeachObject @command1="sp_changeobjectowner ''''?'''', ''''dbo''''",@objectType=4
  这样就非常方便的将每一个数据库对象改为DBO.

当然还要很多非常好的功能,大家可以自己深入研究吧:-)

 

 


 

上一页  [1] [2] 

打印本文 打印本文 关闭窗口 关闭窗口