【问题标题】:Want to script all objects which depend on a SQL Server table想要编写依赖于 SQL Server 表的所有对象的脚本
【发布时间】:2009-11-17 17:40:10
【问题描述】:

“查看依赖项”显示了依赖于 SQL Server 中表的所有对象。现在如何使用 SSMS 在一个命令中编写所有这些对象的脚本?有没有免费的工具可以做到这一点?

【问题讨论】:

    标签: sql-server ssms


    【解决方案1】:

    首先你可以试试这个链接Understanding SQL Dependencies

    其次,您有多个选项来检查依赖项

    使用sql_expression_dependencies 表,要查看 X 对 Y 的依赖关系,请运行以下查询。

    SELECT * 
    FROM sys.sql_expression_dependencies 
    WHERE referencing_id = OBJECT_ID('X')
        AND referenced_id = OBJECT_ID('Y')
        AND referenced_schema_name = 'dbo'
        AND referenced_entity_name = 'Y'
        AND referenced_database_name IS NULL
        AND referenced_server_name IS NULL;
    

    使用syscomments 表,SQL Server 的 syscmets 表存储数据库中每个视图、规则、默认值、触发器、CHECK 和 DEFAULT 约束以及存储过程的原始 SQL 定义语句。这是很多信息!您可以使用以下形式的 SQL 语句查询此表以列出依赖对象

    SELECT *
    FROM syscomments 
    INNER JOIN sysobjects sysobj ON syscomments.id = sysobj.id
    WHERE charindex('your object to check', text) > 0 
    

    使用sp_depends 存储过程,它显示有关数据库对象依赖关系的信息,例如:依赖于表或视图的视图和过程,以及视图或过程所依赖的表和视图

    EXEC sp_depends @objname = N'your object to check'
    

    【讨论】:

    • 很好的答案。谢谢。几年后很有帮助。
    【解决方案2】:

    SSMS 依赖于 SMO 来提取依赖项。 DependencyWalker 类,即。您可以将其包装在您的代码中,并且 SMO 还可以使用 Scripter 类编写对象定义脚本(这也是 SSMS 用于编写对象定义脚本的方法)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-29
      • 2019-01-24
      • 1970-01-01
      • 2018-06-19
      • 1970-01-01
      • 2014-03-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多