首页 > 数据库技术 > 详细

sqlserver 全库查询 带架构

时间:2017-09-20 13:03:31      阅读:298      评论:0      收藏:0      [点我收藏+]

网上现有的全库查询,无法识别自定义架构的数据库结构:

declare @str nvarchar(10)
declare @tablename varchar(50)
declare @colname varchar(50)
declare @counts int
declare @sql nvarchar(2000)--以上定义变量
declare cur1 cursor for 
select a.name tablename,B.name colname from sys.objects a,syscolumns b where a.object_id=b.id and a.type_desc=USER_TABLE--定义游标
set @str= --设置要查找的字符
Open cur1 --打开游标
Fetch next From cur1 Into @tablename,@colname
While(@@Fetch_Status = 0) --循环
Begin
set @sql=Nselect  @counts=COUNT(*) from  + @tablename +    where  charindex(‘‘‘+@str+‘‘‘,+@colname+)>0
exec sp_executesql @sql,N@counts int output,@counts output --执行动态sql
if @counts>0 --判断某个表某个字段是否存在特定字符
begin
print @tablename+,+@colname --打印表名及字段名
end
Fetch next From cur1 Into @tablename,@colname
End
Close cur1 --关闭游标
Deallocate cur1 --释放游标

添加架构支持后,虽偶尔会有报错,可查询架构:

declare @str nvarchar(10)
declare @schemasname varchar(50)
declare @tablename varchar(50)
declare @colname varchar(50)
declare @counts int
declare @sql nvarchar(2000)--以上定义变量
declare cur1 cursor for 
select s.name schemasname,a.name tablename,B.name colname from sys.objects a,syscolumns b,sys.schemas s 
where a.object_id=b.id and a.schema_id=s.schema_id and a.type_desc=USER_TABLE--定义游标
set @str=污染 --设置要查找的字符
Open cur1 --打开游标
Fetch next From cur1 Into @schemasname,@tablename,@colname
While(@@Fetch_Status = 0) --循环
Begin
set @sql=Nselect  @counts=COUNT(*) from  + @schemasname + .+ @tablename +    where  charindex(‘‘‘+@str+‘‘‘,+@colname+)>0
exec sp_executesql @sql,N@counts int output,@counts output --执行动态sql
if @counts>0 --判断某个表某个字段是否存在特定字符
begin
print @schemasname+,+@tablename+,+@colname --打印表名及字段名
end
Fetch next From cur1 Into @schemasname,@tablename,@colname
End
Close cur1 --关闭游标
Deallocate cur1 --释放游标 

 

sqlserver 全库查询 带架构

原文:http://www.cnblogs.com/fanlu/p/7560743.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!