gpt4 book ai didi

SQL object_definition 返回不同的、不存在的对象的定义?

转载 作者:行者123 更新时间:2023-12-02 23:49:43 24 4
gpt4 key购买 nike

我遇到了一些我觉得非常非常奇怪的事情。我正在使用诸如 object_definition(object_id('StoredProcedureName')) 之类的东西来获取存储过程的定义。但是,我注意到在我们的一些数据库上,输出是

创建过程 dbo.SomeOtherStoredProcedure

这是一个问题,因为我使用 object_definition 来更改存储过程,当我尝试执行新查询时,它会说存储过程“SomeOtherStoredProcedure”不存在。

我知道在使用 object_id 时我没有指定对象类型,但是(如果我错了,请纠正我),因为返回的定义也是一个存储过程,我不认为这是这里的问题。

object_definitionobject_id 是否存在我不知道的怪癖?可能是什么原因造成的?

(SQL Azure、SSMS 2012)

最佳答案

正如 Aaron 提到的,原因是 sp_rename。如MSDN says :

Renaming a stored procedure, function, view, or trigger will not change the name of the corresponding object name in the definition column of the sys.sql_modules catalog view

您可以从sys.objects获取更新后的对象名称。通过摆弄字符串可以找到“真实”定义:找到旧对象名称在损坏的定义中的位置,并将其替换为新的对象名称。希望这足够清楚。

关于SQL object_definition 返回不同的、不存在的对象的定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37190732/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com