5

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

ALTER SCHEMA NewSchama TRANSFER dbo.Table1

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

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

4

4 回答 4

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

简单但有效。

于 2008-09-19T14:46:41.260 回答
0

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

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

于 2008-09-19T12:40:08.817 回答
0

声明 @SearchObject VARCHAR(100)

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

SELECT sc.name [Search Object], so.name [Container Object],
CASE so.xtype WHEN 'U' THEN 'Table' WHEN 'P' THEN 'Stored Procedure' WHEN 'F' THEN '用户定义函数' ELSE '其他' END 作为 [容器对象类型]

FROM 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 中选择文本 where text like '%from ' + @SearchObject + '%'

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

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

--Exec sp_helptext 'DeleteAssetByID'

于 2010-03-05T16:16:39.480 回答
0

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

CREATE SCHEMA Reporting

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

ALTER SCHEMA Reporting TRANSFER dbo.Reports 

或者为了更好地理解:

ALTER SCHEMA 'newSchema' TRANSFER 'oldSchema'.'table'
于 2017-08-09T11:04:30.417 回答