我知道如何在 SQL Server 2005 中更改表的架构:
ALTER SCHEMA NewSchama TRANSFER dbo.Table1
但是我如何检查和/或更改使用旧模式名称的存储过程?
抱歉:我的意思是:在存储过程的 sql 中有存储过程具有表的旧模式名称......我如何编辑在过程主体中具有 dbo.Table1 的所有存储过程...... .
我知道如何在 SQL Server 2005 中更改表的架构:
ALTER SCHEMA NewSchama TRANSFER dbo.Table1
但是我如何检查和/或更改使用旧模式名称的存储过程?
抱歉:我的意思是:在存储过程的 sql 中有存储过程具有表的旧模式名称......我如何编辑在过程主体中具有 dbo.Table1 的所有存储过程...... .
简单但有效。
通过在更改架构之前右键单击表来获取依赖对象的列表,然后查看依赖于表的内容,制作列表然后更改它们。然而,总是有可能你会错过一些东西,因为它可能会破坏 SQL 服务器跟踪的依赖关系。
但最好的方法是将数据库编写成一个文件,然后搜索表名,列出所有需要更改的存储过程,然后将它们添加到脚本中以更改桌子。
声明 @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'
例如,我创建了一个表 Reports,默认情况下会为其分配 dbo 架构,现在如果我想更改 Reports 表的架构,首先,我将创建一个名为 Reporting 的新架构:
CREATE SCHEMA Reporting
然后我将执行以下脚本以将 Reports 表的架构从 dbo 更改为 Reporting:
ALTER SCHEMA Reporting TRANSFER dbo.Reports
或者为了更好地理解:
ALTER SCHEMA 'newSchema' TRANSFER 'oldSchema'.'table'