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

时间:2008-09-19 12:34:06

标签: sql-server stored-procedures

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

ALTER SCHEMA NewSchama TRANSFER dbo.Table1

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

抱歉:我的意思是: 存储过程在存储过程的sql中具有表的旧模式名称...如何编辑在过程正文中具有dbo.Table1的所有存储过程...

4 个答案:

答案 0 :(得分:1)

  • 使用任务>在SSMS中生成脚本以提供一系列Create Proc脚本。
  • 使用Find&替换( Alt - H )将“创建”更改为“更改”
  • 使用 F & R 将'dbo.Table1'更改为'dbo.Table2'
  • 然后执行( F5 )以修改所有受影响的SP。

简单但有效。

答案 1 :(得分:0)

通过在更改架构之前右键单击表来获取依赖对象的列表,然后查看依赖于表的内容,创建列表然后更改它们。但是,总有可能会遗漏某些东西,因为它可能会破坏SQL服务器跟踪的依赖关系。

但最好的方法是将数据库编写成文件,然后搜索表名,列出需要更改的所有sprocs,然后将其添加到脚本中进行更改表的架构。

答案 2 :(得分:0)

DECLARE @SearchObject VARCHAR(100)

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

SELECT sc.name [Search Object],so.name [Container Object],
CASE so.xtype 什么时候'你'那'表' 什么'P'那么'存储过程' 当'F'那么'用户定义的功能' ELSE'其他' 结束 作为[容器对象类型]

FROM sysobjects so

INNER JOIN syscolumns sc ON so.id = sc.id

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

ORDER BY [Container Object] ASC

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

从syscomments中选择文本“%from”+ @SearchObject +'%'

等文本

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

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

- Exec sp_helptext'DeleteAssetByID'

答案 3 :(得分:0)

例如我创建了一个表Reports,默认情况下会为其分配dbo模式,现在如果我想更改Reports表的模式,首先,我将创建一个名为Reporting的新模式:

szWindowText

然后我将执行以下脚本,将Reports表的架构从dbo更改为Reporting:

CREATE SCHEMA Reporting

或者为了更好地理解:

ALTER SCHEMA Reporting TRANSFER dbo.Reports