【问题标题】:SQL query to search all tables and databases data for a specific valueSQL 查询以搜索所有表和数据库数据以获取特定值
【发布时间】:2017-04-20 07:38:15
【问题描述】:

SQL Server 是否有查询以在所有表​​和数据库中查找特定值?我强调查询而不是存储过程。

【问题讨论】:

  • 你为什么要这样做?你不知道你的数据存储在哪里吗?
  • 我想这样做是因为如果我忘记了我的数据存储在哪里,或者我是否在一个大项目中添加了一个表
  • 运气不好。只需搜索表格,一次一张。 (可以通过循环动态完成。)
  • 了解如何确定优先级。如果你只是在不知道自己在做什么的情况下将表格和数据扔到项目中,那么你迟早要付出代价。
  • 如果您知道自己的钥匙忘在厨房柜台上,您是否曾经四处搜寻整个房子?即使在测试中,也不要对您的应用程序这样做。注意@jarlh 的建议并学习设置最佳实践!如果您的数据库增长到数百 GB / TB,那么提前了解一些信息(表名)可以为您节省数小时的查询搜索时间(更不用说资源了)。

标签: sql sql-server tsql search


【解决方案1】:

其实是有办法的。

选项 1:

有一个名为sp_msForEachTable 的程序可以帮助您。它并不是真正的官方文档功能,因此不建议使用,但它确实有效。

EXEC sp_msForEachTable 'SELECT TOP 10 * FROM ?'

请记住,如果您有很多桌子,可能需要一段时间才能列出所有内容。而且,如果您有很多表而没有那么多 RAM,您的 Management Studio 可能会在完成之前崩溃。

选项 2:

您可以使用系统视图sys.tables 动态创建您的SQL

SELECT 'SELECT TOP 10 * FROM ' + name FROM sys.tables

然后您可以将结果复制/粘贴到另一个窗口中,并可以部分运行它们。

【讨论】:

  • 感谢您的回复
【解决方案2】:

如果你知道你的表名:

SELECT * FROM table1, table2, ...; 

【讨论】:

  • 是否有一个循环来执行此操作而不是写 table1,table2,....?
  • 只需分享适当的答案..并在发布之前先考虑一下。仔细阅读问题。
  • 如果每张表都超过几行,这可能会使您服务器上的所有活动停止。
猜你喜欢
  • 2016-06-18
  • 2018-07-31
  • 2018-02-24
  • 2017-11-23
  • 1970-01-01
  • 1970-01-01
  • 2011-04-24
  • 2016-07-08
  • 1970-01-01
相关资源
最近更新 更多