如何通过一个值查找到值所在的SQL数据库表?
由于没有系统的源码和开发文档,系统的表有200多个,所有可猜测到的表命名规则都找了都找不到。有没有什么方法可以通过一个已知的值,找到这个值所在的表?http://zhid...
由于没有系统的源码和开发文档,系统的表有200多个,所有可猜测到的表命名规则都找了都找不到。有没有什么方法可以通过一个已知的值,找到这个值所在的表?
http://zhidao.baidu.com/question/48726567.html#irelatelink
这里搜到一个方法,但我没有执行成功,应该是要建一个存储过程吧? 展开
http://zhidao.baidu.com/question/48726567.html#irelatelink
这里搜到一个方法,但我没有执行成功,应该是要建一个存储过程吧? 展开
6个回答
展开全部
可用如下代码实现:
declare @cloumns varchar(40)
declare @tablename varchar(40)
declare @str varchar(40)
declare @counts int
declare @sql nvarchar(2000)
declare MyCursor Cursor For
Select a.name as Columns, b.name as TableName from syscolumns a,sysobjects b,systypes c
where a.id = b.id
and b.type = 'U'
and a.xtype=c.xtype
and c.name like '%char%'
set @str='张三'
Open MyCursor
Fetch next From MyCursor Into @cloumns,@tablename
While(@@Fetch_Status = 0)
Begin
set @sql='select @tmp_counts=count(*) from ' +@tablename+ ' where ' +@cloumns+' = ''' +@str+ ''''
execute sp_executesql @sql,N'@tmp_counts int out',@counts out
if @counts>0
begin
print '表名为:'+@tablename+',字段名为'+@cloumns
end
Fetch next From MyCursor Into @cloumns,@tablename
End
Close MyCursor
Deallocate MyCursor
如本题,是查找库中,包含“张三”的数据的表。
结果如图:
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
目前没有这种专用工具,鉴于你的表如此之多,也没有好的办法。
导数据出来检测是最笨的办法,工作量非常大。
如果可能建议询问开发系统的公司或者作者。
或者,如果是SQL SERVER的数据库,如果没有加密的话,可以打开跟踪器,看写入值的时候往哪个表哪个字段写值。不过前提是,你知道在系统里的哪一个模块里写那个数值。这或许会简单一点,但是,大部分的数据库管理系统都没有提供这种跟踪器。不过,所有的数据库系统都会写日志,你可以打开日志,查看。不过没有SQL SERVER的跟踪器直观。
有时需要运气,祝你好运!
导数据出来检测是最笨的办法,工作量非常大。
如果可能建议询问开发系统的公司或者作者。
或者,如果是SQL SERVER的数据库,如果没有加密的话,可以打开跟踪器,看写入值的时候往哪个表哪个字段写值。不过前提是,你知道在系统里的哪一个模块里写那个数值。这或许会简单一点,但是,大部分的数据库管理系统都没有提供这种跟踪器。不过,所有的数据库系统都会写日志,你可以打开日志,查看。不过没有SQL SERVER的跟踪器直观。
有时需要运气,祝你好运!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
告诉你个好办法,如果数据量有限,可能的话,你把数据导出成文本格式。
然后用随便一个文本编辑器,查找你要的字串。
找到以后看看周围的SQL,就知道你找的值存在哪个表了。
虽然是土办法,不过最有效了。
但是如果数据量非常大,就写一个小工具遍历表和列去找值吧,我想应该再没别的办法了
然后用随便一个文本编辑器,查找你要的字串。
找到以后看看周围的SQL,就知道你找的值存在哪个表了。
虽然是土办法,不过最有效了。
但是如果数据量非常大,就写一个小工具遍历表和列去找值吧,我想应该再没别的办法了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询