- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我遇到了一些我觉得非常非常奇怪的事情。我正在使用诸如 object_definition(object_id('StoredProcedureName'))
之类的东西来获取存储过程的定义。但是,我注意到在我们的一些数据库上,输出是
创建过程 dbo.SomeOtherStoredProcedure
这是一个问题,因为我使用 object_definition 来更改存储过程,当我尝试执行新查询时,它会说存储过程“SomeOtherStoredProcedure”不存在。
我知道在使用 object_id 时我没有指定对象类型,但是(如果我错了,请纠正我),因为返回的定义也是一个存储过程,我不认为这是这里的问题。
object_definition
或 object_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/
我遇到了一些我觉得非常非常奇怪的事情。我正在使用诸如 object_definition(object_id('StoredProcedureName')) 之类的东西来获取存储过程的定义。但是,我注
我遇到了一些我觉得非常非常奇怪的事情。我正在使用诸如 object_definition(object_id('StoredProcedureName')) 之类的东西来获取存储过程的定义。但是,我注
我想使用内置函数,但目标对象位于不同的数据库中。 示例 ------------------------------------ USE TestDB_1 GO SELECT OBJECT_DEFIN
我是一名优秀的程序员,十分优秀!