搜索对象所在的位置.sql

系统 1673 0

CREATE PROC sp_FindObject
@objectname sysname,           --要查找的对象名
@whereand  nvarchar(2000)=N'', --数据库的过滤条件
@operator   nchar(2)=N'='      --查找对象的运算符
AS
SET NOCOUNT ON
--保存搜索结果的临时表
CREATE TABLE #(DatabaseName sysname,ObjectName sysname,Type sysname)

--定义 sp_MSforeach_worker 检索数据使用的游标
IF @whereand IS NULL SET @whereand=''
EXEC('
 DECLARE hCForEach CURSOR GLOBAL
 FOR
 SELECT name FROM master.dbo.sysdatabases
 WHERE HAS_DBACCESS(name)=1 '+@whereand )
DECLARE @sql nvarchar(4000)
SET @sql=N'INSERT # SELECT N''?'',name,Type=CASE xtype
   WHEN N''C'' THEN N''CHECK约束''
   WHEN N''TF'' THEN N''表函数''
   WHEN N''D'' THEN N''默认值或DEFAULT约束''
   WHEN N''TR'' THEN N''触发器''
   WHEN N''F'' THEN N''FOREIGN KEY约束''
   WHEN N''U'' THEN N''用户表''
   WHEN N''L'' THEN N''日志''
   WHEN N''V'' THEN N''视图''
   WHEN N''FN'' THEN N''标量函数''
   WHEN N''X'' THEN N''扩展存储过程''
   WHEN N''IF'' THEN N''内嵌表函数''
   WHEN N''R'' THEN N''规则''
   WHEN N''P'' THEN N''存储过程''
   WHEN N''PK'' THEN N''PRIMARY KEY 约束''
   WHEN N''RF'' THEN N''复制筛选存储过程''
   WHEN N''UQ'' THEN N''UNIQUE约束''
   WHEN N''S'' THEN N''系统表''
   ELSE N''未知'' END
  FROM [?].dbo.sysobjects
  WHERE name '
 +CASE
  WHEN @operator IN('=','>','>=','!>','<','<=','!<','<>','!=')
  THEN @operator+QUOTENAME(@objectname,'''')
  WHEN @operator='IN'
  THEN @operator+N' IN('+QUOTENAME(@objectname,'''')+')'
  WHEN @operator IN('LIKE','%')
  THEN ' LIKE '+QUOTENAME(@objectname,'''')
  ELSE '='+QUOTENAME(@objectname,'''')
 END
EXEC sp_MSforeach_worker @command1=@sql
SELECT * FROM #

搜索对象所在的位置.sql


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论