sql - 查找存储过程中未引用的所有表

标签 sql sql-server stored-procedures

我有一个包含大量表的 SQL Server 数据库,其中一些不再使用,所以我想删除它们。所有数据库交互都是通过这些表的存储过程进行的。

是否有一个数据库 SQL 脚本可供我使用,该脚本将列出数据库中任何存储过程中未引用的所有表?

最佳答案

如果是 SQL Server 2008,则依赖项信息现在是可靠的。

SELECT SCHEMA_NAME(t.schema_id),
       t.name
FROM   sys.tables t
WHERE  is_ms_shipped = 0
       AND NOT EXISTS (SELECT *
                       FROM   sys.sql_expression_dependencies d
                       WHERE  d.referenced_entity_name = t.name
                              AND (( is_ambiguous = 1 or is_caller_dependent=1)
                                     OR
                          d.referenced_id = t.object_id)  )

关于sql - 查找存储过程中未引用的所有表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5352353/

相关文章:

php - 多次使用绑定(bind)参数

sql-server - 在 MSSQL 触发器中使用 POST 方法

sql - 在 SQL Server 数据库中存储大字符串的最佳方式?

sql-server - 将 Access 表单绑定(bind)到存储过程的结果

MySQL 在函数内部调用过程进行计数

sql-server-2005 - 如何加快 Coldfusion 中的批处理作业?

sql - 如何查找不同表中的行数

sql - 在 ORACLE 中重命名分区

sql - 手工全外连接

sql-server - SQL 服务器 : Dynamic Union Join