根据表名字查询所在库和引用

--------------------查询所有数据库
DECLARE @sysname sysname; --数据库名称变量
DECLARE @serachText NVARCHAR(30);
SET @serachText='Dic_CityBase'
DECLARE @Count INT;
SET @Count = 0
DECLARE My_Cursor CURSOR --定义游标
FOR (select [name] from [master].[dbo].[sysdatabases]) --查出所有的数据库名称的集合放到游标中
OPEN My_Cursor; --打开游标
FETCH NEXT FROM My_Cursor INTO @sysname; --读取下一行/第一行数据并存放在变量值中
WHILE @@FETCH_STATUS = 0 --是否可继续执行循环状态
BEGIN
--PRINT @sysname;
DECLARE @sql nvarchar(max); --sql命令字符串
SET @sql='USE ['+@sysname+'];';
--Begin

IF (CHARINDEX('T_PaoTui_Dic', @sysname)>0)
BEGIN

SET @sql+=' SELECT @RowNum=COUNT(1) from sysobjects o LEFT join syscomments s on o.id = s.id WHERE ( XType=''U'' OR XType=''p'') AND (text LIKE ''%'+@serachText+'%'' or ' + ' name LIKE ''%'+@serachText+'%'')'; --自定义的sql命令
PRINT @sql;
EXEC SP_EXECUTESQL @sql,N'@RowNum INT OUT',@Count OUTPUT
--判断
IF(@Count>0)
BEGIN
SELECT @sysname AS '数据库'
set @sql =REPLACE(@sql,'@RowNum=COUNT(1)','*')
EXEC SP_EXECUTESQL @sql
end

-- PRINT @sql;
end


--End
--EXEC(@sql); --执行字符串sql

FETCH NEXT FROM My_Cursor INTO @sysname; --读取下一行数据并存放在变量值中
END
CLOSE My_Cursor; --关闭游标
DEALLOCATE My_Cursor; --释放游标
GO

posted @ 2019-10-30 10:53  慢慢走向架构师  阅读(388)  评论(0编辑  收藏  举报