SQL Server 2008孤立存储过程?
我通过SQLServerManagementStudio使用SQLServer2008 我以前从未见过这种情况: 通常,当我一天中大部分时间都在重构数据库时,我会使用以下方法在现有过程中查找对列、表和其他过程的引用:SQL Server 2008孤立存储过程?,sql,sql-server,stored-procedures,database-administration,orphan,Sql,Sql Server,Stored Procedures,Database Administration,Orphan,我通过SQLServerManagementStudio使用SQLServer2008 我以前从未见过这种情况: 通常,当我一天中大部分时间都在重构数据库时,我会使用以下方法在现有过程中查找对列、表和其他过程的引用: select * from sys.sql_modules where [definition] like '%SomethingImLookingFor%' 这没什么特别的,我相信很多数据库负责人以前都做过 然而,我注意到结果中包含了一个程序,当createdIf实际创建时,它
select *
from sys.sql_modules
where [definition] like '%SomethingImLookingFor%'
这没什么特别的,我相信很多数据库负责人以前都做过
然而,我注意到结果中包含了一个程序,当createdIf实际创建时,它看起来完全是一个意外。在数据库中,我有一个名为ChatObject_Remove的过程,它出现在我的查询中,因为我正在查找任何引用术语%Remove%的内容。但我也看到了一个名为zzChatObject_Remove的重影过程
在SSMS中,当我展开数据库的可编程性->存储过程时,我看到ChatObject_Remove,但没有看到zzChatObject_Remove
我尝试刷新这组,但幽灵仍然没有出现
我试着用这句话
drop procedure [dbo].[zzChatObject_Remove]
它返回一个错误,说它不存在或者我没有权限
我尝试创建一个名为zzChatObject_Remove的过程,它允许我这样做,但现在我在sql_模块中有两个对象,其中包含创建过程zzChatObject_Remove的定义。。。。然后我删除了新的一个,它允许,和预期一样,幽灵仍然在模块表中,我不能触摸它
以前有人见过这个吗?这还能在哪里?这会有什么害处吗?如何摆脱sys.sql_modules表中这个看似孤立的过程
提前感谢您的任何意见
幸运的是,在万圣节前后看到一个鬼魂…试试这个,看看它是怎么出现的:
exec sp_MSforeachdb '
select ''?'' [db]
, s.name [schema]
, o.name [object]
, o.type_desc
from [?].sys.objects o
inner join sys.schemas s
on s.schema_id = o.schema_id
where o.name = ''zzChatObject_Remove''
'
或以下各项:
select *
from sys.sql_modules sm
inner join sys.objects o
on o.object_id = sm.object_id
inner join sys.schemas s
on s.schema_id = o.schema_id
where sm.description like '%zzChatObject_Remove%'
另外,要检查,这个过程是否在sql_模块中定义,还是因为它在另一个过程的代码中被引用而显示?您是否检查过它是否在另一个架构中?在数据库上下文中执行此语句,并查看它是否提供了一些信息,让您了解它在创建时的来源选择*from sys.procedures where[type]='P'存储过程的名称中是否有尾随空格或Unicode字符?