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

ALTER SCHEMA NewSchama TRANSFER dbo.Table1

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

对不起:我是说:有些存储过程在存储过程的 sql 中具有表的旧架构名称...我如何编辑程序主体中具有 dbo.Table1 的所有存储过程...

有帮助吗?

解决方案

在更改架构之前,通过右键单击表来获取依赖对象的列表,然后查看依赖于该表的内容,创建一个列表,然后更改它们。然而,您总是有可能会错过一些东西,因为有可能破坏 SQL Server 的依赖关系。

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

其他提示

  • 使用SSMS中的Tasks>Generate Scripts提供一系列Create Proc脚本。
  • 使用查找和替换 (替代 - H)将“创建”更改为“更改”
  • 使用 F & 将 'dbo.Table1' 更改为 'dbo.Table2'
  • 然后执行(F5) 修改所有受影响的 SP。

简单但有效。

声明 @SearchObject VARCHAR(100)

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

SELECT sc.name [搜索对象], so.name [容器对象],
case so.xtype当'u'然后'table'当'p'然后``p''t table''table''tate'tater“存储过程”何时'f'然后“ f”,然后“用户定义函数” else''''en en en en te

来自 sysobjects 所以

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 [容器对象] ASC

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

从 syscomments 选择文本,其中文本如 '%from ' + @SearchObject + '%'

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

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

--Exec sp_helptext 'DeleteAssetByID'

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

CREATE SCHEMA Reporting

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

ALTER SCHEMA Reporting TRANSFER dbo.Reports 

或者为了更好地理解:

ALTER SCHEMA 'newSchema' TRANSFER 'oldSchema'.'table'
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top