根据存储过程的名字找到属于那个库?
例如:
一个存储过程的名字:P_ProName;
他属于那个库?

解决方案 »

  1.   

    从sysobjects中找name为P_ProName的记录
      

  2.   

    sp_msforeachdb 'use [?] if object_id(''存儲過程名'') is not null select ''?'''
      

  3.   

    select * from sysobjects where id=object_id('P_ProName')注意,每个库都有自己的sysobjects表,所以要逐个库去运行
      

  4.   

    sp_msforeachdb 'use [?] if object_id(''存儲過程名'') is not null select ''?'''
    估计只有这种方式...
      

  5.   

    declare @sql varchar(8000)
    select @sql=isnull(@sql+' union all select ','select ')+ 'name=''' + name + ''' from ' + name + '..sysobjects where name=''存储过程名''' from sysdatabases
    exec(@sql)
      

  6.   

    declare @sql varchar(8000)select @sql=isnull(@sql+' union all select ','select ')+ 'name=''' + name + ''' from ' + name + '..syscomments where text like ''create procedure %dbgendata%''' from sysdatabases
    exec(@sql)在master库下运行
      

  7.   

    支持六楼,同意6楼的,
    sp_msforeachdb 'use [?] if object_id(''P_ProName'') is not null select ''?'''你不在需要做代码做任何改动,只要拷贝下来,放到你的sqlserver 上执行,就可以返回有该P_ProName存储过程的数据库名称.
      

  8.   

    3楼强但速度有点慢,11楼又觉不足,关于11楼的改进意见:procprduce 改为proc,我喜欢简写就查不出来了,模糊查询不能一次判断是哪个库,至少要显示出相关内容,我认为换个表用sysobjects更好
    declare @sql varchar(8000)
    select @sql=isnull(@sql+' union all select ','select ')+ 'name=''' + name + ''' from ' + name + '..sysobjects where xtype=''p'' and name=''存储过程名''' from sysdatabases
    exec(@sql)