sqlserver 全库查询 带架构

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

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=N‘select  @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=N‘select  @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 --释放游标 
时间: 2024-10-26 02:46:29

sqlserver 全库查询 带架构的相关文章

SqlServer跨库查询

由于业务的拆分,数据库拆分为两种作用: 汇总数据库(Master,头节点数据库), 子节点数据库(Compute Node,计算子节点数据库) 这样,就设计到子节点访问头节点数据库中的某张汇总表,这种表的记录一般在几,到几十万行左右,目前适合做跨库查询. 跨库查询目前分为两种: 通过sp_addlinkedserver建立链接服务器 没有链接服务器时,可以使用openrowset或者opendatasource函数 在部署时,需要在SQLSERVER外围应用配置器中启用OpenRowSet和Op

SQLServer跨库查询--分布式查询[转载]

--用openrowset连接远程SQL或插入数据 --如果只是临时访问,可以直接用openrowset --查询示例 select * from openrowset('SQLOLEDB' ,'sql服务器名';'用户名';'密码' ,数据库名.dbo.表名) --导入示例 select * into 表 from openrowset('SQLOLEDB' ,'sql服务器名';'用户名';'密码' ,数据库名.dbo.表名) --创建链接服务器 exec sp_addlinkedserve

SQLServer跨库查询--分布式查询

出处:http://www.cnblogs.com/doosmile/archive/2012/03/16/2400646.html --用openrowset连接远程SQL或插入数据 --如果只是临时访问,可以直接用openrowset --查询示例 select * from openrowset('SQLOLEDB' ,'sql服务器名';'用户名';'密码' ,数据库名.dbo.表名) 在跨库查询时需要启用Ad Hoc Distributed Queries启用Ad Hoc Distri

SQLServer 跨库查询实现方法

不使用链接的服务器名,而提供特殊的连接信息,并将其作为四部分对象名的一部分 本文给出一条 SQL 语句用于展示在同一名服务器上,不同的数据库间查询,注意当前连接用户要对两个库都有权限SQL Server 中 SQL 语句中对象的完整表达式是: [DatabaseServer].[DatabaseName].[DatabaseSchema].[DatabaseObject] 本文给出一条 SQL 语句用于展示在同一名服务器上,不同的数据库间查询,注意当前连接用户要对两个库都有权限. 复制代码代码如

分库分表的几种常见玩法及如何解决跨库查询等问题

在谈论数据库架构和数据库优化的时候,我们经常会听到"分库分表"."分片"."Sharding"-这样的关键词.让人感到高兴的是,这些朋友所服务的公司业务量正在(或者即将面临)高速增长,技术方面也面临着一些挑战.让人感到担忧的是,他们系统真的就需要"分库分表"了吗?"分库分表"有那么容易实践吗?为此,笔者整理了分库分表中可能遇到的一些问题,并结合以往经验介绍了对应的解决思路和建议. 垂直分表 垂直分表在日常开

【开源框架】SqlSugarRepository 全库ORM 正式发布

SqlSugarRepository.dll 全库开发框架支持 四种数据库:SqlServer. MySql .Oracle和Sqlite. SqlSugarRepository是为全库开发而生的ORM框架,能够做到多种数据库之间的无间隙切换,在这一年多的时间里,园友提出的各种需求我都已经切切实实的去做了,做到了能力范围内的最好,一个不错的里程碑.同时也对未来有了更明确的规划,这只是开源的开始,Sugar ORM 还会有更多惊喜. 基于SqlSugar的开源CMS(佰签软件出品)和SqlSuga

使用network管理DD恢复全库操作步骤

使用network管理DD恢复全库操作步骤基本信息:系统平台:RHEL 5.4_86_64database版本:11.2.0.2.0-64bit1.检查目标主机是否安装networker客户端. ps -ef | grep nsr 无软件需要安装软件networker客户端. 2.检查各个主机中/etc/hosts文件对相应主机进行解析. networker备份服务器 主机名 源服务器DB 主机名 目标服务器DB 主机名 三台主机必须相互解析. notes: 在legato networker配

SQLServer访问Oracle查询性能问题解决

原文:SQLServer访问Oracle查询性能问题解决 1. 问题 系统有个模块,需要查询Oracle数据库中的数据.目前是通过建立链接服务器实现的. SQLServer访问Oracle实现 可参考这篇文章http://www.cnblogs.com/gnielee/archive/2010/09/07/access-oracle-from-sqlserver.html 目前的查询语句就是一个简单的带where条件的查询语句,类似如下: SELECT * FROM LINKED_NAME..A

rman全库恢复到不同主机,不同实例名,不同目录下

一.配置目标主机的ip.hostname及与源端主机的连通性 1.配置目标主机IP 使用图形界面配置IP: administration----network---修改IP(指定静态IP) deactivate网卡---activate网卡(重启网卡配置才能生效)或者使用root用户执行:service network restart 重启网卡 2.配置主机名 root用户执行:hostname hostNameValue vi  /etc/sysconfig/network 修改:HOSTNA