Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server 2008孤立存储过程?_Sql_Sql Server_Stored Procedures_Database Administration_Orphan - Fatal编程技术网

SQL Server 2008孤立存储过程?

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实际创建时,它

我通过SQLServerManagementStudio使用SQLServer2008

我以前从未见过这种情况:

通常,当我一天中大部分时间都在重构数据库时,我会使用以下方法在现有过程中查找对列、表和其他过程的引用:

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字符?