如何在所有存储过程中更改表的架构名称
我知道如何在SQL Server 2005中更改表的架构:
ALTER SCHEMA NewSchama TRANSFER dbo.Table1
但是,如何检查和/或者更改使用旧模式名称的存储过程?
对不起:我的意思是:
在存储过程的sql中有一些存储过程具有表的旧模式名...我如何编辑在过程主体中具有dbo.Table1的所有存储过程...
解决方案
在更改架构之前,右键单击表可获取依赖对象的列表,然后查看依赖于表的内容,列出并进行更改。但是,总有可能我们会错过某些东西,因为有可能破坏SQL Server跟踪的依赖关系。
但是最好的方法是将数据库脚本化为文件,然后搜索表名,列出需要更改数据库的所有存储过程的列表,然后将其添加到脚本中以更改数据库的架构桌子。
- 使用SSMS中的"任务">"生成脚本"来提供一系列Create Proc脚本。
- 使用查找并替换(
Alt
-H
)将"创建"更改为"更改" - 使用
F
和R
将'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'