use*_*299 4 sql-server stored-procedures
不久前ALF_GetPopulationForPolygon_2_old
创建了该过程。然后在SSMS中,它被重命名(right mouse button -> rename)
为 procedure ALF_GetPopulationForPolygon_2_old_FOR_DELETE_20170504
。重命名正常通过,但是结果查询:
SELECT
sm.definition
FROM
sys.objects AS o
INNER JOIN sys.sql_modules AS sm
ON ( 1 = 1 )
AND ( sm.object_id = o.object_id )
WHERE
( 1 = 1 )
AND ( o.name like 'ALF_GetPopulationForPolygon_2_old_FOR_DELETE_20170504' )
Run Code Online (Sandbox Code Playgroud)
并调用存储过程:
EXEC sp_helpText 'ALF_GetPopulationForPolygon_2_old_FOR_DELETE_20170504'
Run Code Online (Sandbox Code Playgroud)
返回以下文本:
...
CREATE PROCEDURE [dbo]. [ALF_GetPopulationForPolygon_2]
...
Run Code Online (Sandbox Code Playgroud)
这些显示了过程的旧(!)名称。您知道这是由什么引起的吗?如何解决这个问题?
您不应该重命名对象,至少有两个原因。
如果您使用 T_SQL 命令而不是 GUI(您在 Management Studio 中“单击”的所有命令都会在幕后生成 T-SQL 代码),您会收到一条警告,与您在 BOL 文章中看到的内容相同: sp_rename (Transact -SQL)
小心 更改对象名称的任何部分都可能会破坏脚本和存储过程。我们建议您不要使用此语句来重命名存储过程、触发器、用户定义函数或视图;相反,删除该对象并使用新名称重新创建它。
这是反对更名的第一个原因。滚动文章找到备注部分:
重命名存储过程、函数、视图或触发器不会更改 sys.sql_modules 目录视图的定义列中相应对象名称的名称。因此,我们建议不要使用 sp_rename 来重命名这些对象类型。相反,删除并使用新名称重新创建对象。
这是第二次。
因此,当您想要重命名过程时,您应该将过程编写为 CREATE 并更改过程名称,这样做可以使用新名称重新创建过程,然后可以删除旧名称
归档时间: |
|
查看次数: |
939 次 |
最近记录: |