【问题标题】:SQL Server : list all columns used in queriesSQL Server:列出查询中使用的所有列
【发布时间】:2014-02-24 14:55:53
【问题描述】:

有没有办法检测 SQL Server 数据库中使用了哪些列和哪些表?

  • 仅针对 SQL Server 2012 就可以了。
  • 我们可以假设旧网站中的列使用没有“*”。

详情:
我正在努力更新旧系统的表结构以处理更新的数据库(2005 年到 2012 年)

有很多臃肿的表,其中的列从未使用过,甚至还有从未使用过的表。通过手动检查代码来识别所有这些将是一件痛苦的事情。

(我的假设是我们可以在应用程序上运行完整的测试通过时运行 SQL Server 分析器,但我不知道提取列的便捷方法)

谢谢。

【问题讨论】:

  • 在不更改代码的情况下,非常不太可能取出任何列或表。表和列通常只是为了支持某些代码而创建的,因此将它们删除可能会破坏该代码。这种情况没有灵丹妙药。
  • @RBarryYoung BTW,您的站点似乎已关闭:“/dnn”应用程序中的服务器错误。
  • 遗留系统与多个第三方工具绑定到同一个数据结构中。有 100 多个表,2000 多个字段,并且似乎大约一半的表完全是空的。 @RBarryYoung,虽然我同意这应该是构建事物的方式,但在传统中很少出现这种情况。

标签: sql sql-server


【解决方案1】:

您可以在 Mgmt Studio 中列出表的依赖关系,这将显示哪些 SP、UDF 等依赖于相关表。您不能对单个字段执行此操作。但是,这只会显示内部依赖关系。 Sql Profiler 理论上会向您显示您的应用程序请求的所有字段,但它仍然不会真正告诉您太多,因为应用程序可能不会对其检索的值做任何事情。如果您要更改数据库,那么只有在您还要更改应用程序时付出努力才是真正有意义的,然后您应该真正从用户那里获得一些关于哪些功能仍然有用以及之前哪些功能被破坏的意见您过于参与后端刷新。恕我直言。

【讨论】:

  • 我可能会接受这个作为答案,因为我也没有办法做到这一点。 理论上,一个完整的测试套件应该利用应用程序的每个部分,以及数据库的每个部分。不幸的是,大部分 SQL 代码实际上都在应用程序中,而不仅仅是数据库内部的存储过程和其他对象。我假设这是最好的答案,但我会保持开放状态,以便为潜在的“是的,可以做到,这就是方法”提供机会
猜你喜欢
  • 2017-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-17
  • 1970-01-01
  • 2020-03-10
  • 1970-01-01
  • 2010-10-30
相关资源
最近更新 更多