我通过 SQL Server Management Studio 使用 SQL Server 2008
我以前从未见过这样的:
通常,当我大部分时间都在重构数据库时,我使用以下内容来查找对现有过程中列、表和其他过程的引用:
select *
from sys.sql_modules
where [definition] like '%SomethingImLookingFor%'
这没什么特别的,我敢肯定很多数据库负责人以前都做过。
但是,我注意到结果包含一个在创建时看起来完全是意外的过程(如果实际创建的话)。在数据库中,我有一个名为 的过程ChatObject_Remove
,它出现在我的查询中,因为我正在寻找任何引用该术语的东西%Remove%
。但我也看到了一个名为的幽灵程序zzChatObject_Remove
在 SSMS 中,当我展开数据库时,Programmability -> Stored Procedures
我看到了ChatObject_Remove
,但没有zzChatObject_Remove
。
我试过刷新这个组,鬼还是没有出现。
我尝试使用该语句
drop procedure [dbo].[zzChatObject_Remove]
它返回一个错误,说它不存在或者我没有权限。
我试图创建一个名为的过程zzChatObject_Remove
,它允许我这样做(但现在我有 2 个对象,sql_modules
其中有 的定义create procedure zzChatObject_Remove ...
)。然后我删除了它允许的新的,和预期的一样,幽灵仍然在模块表中,我无法触摸它。
有没有人见过这个?这还能在哪里?会不会有什么害处?我怎样才能摆脱sys.sql_modules
表中这个看似孤立的过程?
提前感谢您的任何意见。
只是我的运气,在万圣节的时候看到了一个鬼……