如何在所有存储过程中更改表的架构名称

时间:2020-03-06 14:25:44  来源:igfitidea点击:

我知道如何在SQL Server 2005中更改表的架构:

ALTER SCHEMA NewSchama TRANSFER dbo.Table1

但是,如何检查和/或者更改使用旧模式名称的存储过程?

对不起:我的意思是:
在存储过程的sql中有一些存储过程具有表的旧模式名...我如何编辑在过程主体中具有dbo.Table1的所有存储过程...

解决方案

在更改架构之前,右键单击表可获取依赖对象的列表,然后查看依赖于表的内容,列出并进行更改。但是,总有可能我们会错过某些东西,因为有可能破坏SQL Server跟踪的依赖关系。

但是最好的方法是将数据库脚本化为文件,然后搜索表名,列出需要更改数据库的所有存储过程的列表,然后将其添加到脚本中以更改数据库的架构桌子。

  • 使用SSMS中的"任务">"生成脚本"来提供一系列Create Proc脚本。
  • 使用查找并替换(Alt-H)将"创建"更改为"更改"
  • 使用FR将'dbo.Table1'更改为'dbo.Table2'
  • 然后执行(F5)修改所有受影响的SP。

简单但有效。

宣告@SearchObject VARCHAR(100)

SET @SearchObject ='searchable_table_name'-将'searchable_table_name'更改为要搜索的表名

SELECT sc.name [搜索对象],so.name [容器对象],
案例so.xtype
什么时候" U"然后"表"
当" P"然后"存储过程"时
当" F"然后"用户定义的功能"时
ELSE"其他"
结尾
作为[容器对象类型]

从sysobjects如此

内部联接syscolumns sc ON so.id = sc.id

其中的sc.name喜欢'%'+ @SearchObject +'%'AND so.xtype IN('U','P','F')-U:表,P:存储过程,F:用户定义函数)

ORDER BY [容器对象] ASC

-显示包含所请求表名的存储过程。

从syscomments中选择文本,其中'%from'+ @SearchObject +'%'之类的文本

(从sysobjects中选择id,其中type ='P'和name ='')

-显示特定存储过程的内容(从上面找到)

--exec sp_helptext'DeleteAssetByID'