【问题标题】:How can I extract sprocs/tables/functions from a specific schema?如何从特定模式中提取 sprocs/tables/functions?
【发布时间】:2011-09-27 09:13:13
【问题描述】:

我需要从特定架构下的 SQL Server 08 数据库中提取所有表、存储过程和函数。我可以过滤 Management Studio 中显示的项目,然后为每个项目执行Script As -> Drop/Create,但我真的很想避免这种情况,因为架构中有很多项目。

有没有办法做到这一点?

编辑:

我查看了this question(我刚刚发现可能重复)。我宁愿不使用建议的外部工具,因为这是在工作,我需要获得批准才能使用。我也不想要一个大的 Create Database 脚本 - 我需要为每个表/存储过程/函数单独的​​脚本。

【问题讨论】:

    标签: sql-server-2008 extract database-schema


    【解决方案1】:
    select 
       object_name(obj.object_id), 
       sch.name, 
       co.definition 
    from 
       sys.objects obj 
       join sys.schemas sch on sch.schema_id = obj.schema_id
       left join sys.sql_modules co on co.object_id = obj.object_id
    where 
       sch.name = 'DBO' --here goes your schema name
    

    -- syscomments 表在 sql 2000 中被使用过,你不应该再使用它了 - 但当它是 sys.syscmets 表时

    【讨论】:

    • 这行得通,谢谢。虽然得到一个奇怪的行为 - 它适用于我正在寻找的每个模式除了。任何配置或任何东西都可以阻止模式出现在这个查询/sys.objects 中吗?我已经确保对象肯定在正确的架构中,所以它不是空的。
    【解决方案2】:

    Visual Studio 2010 Premium 包括数据库项目工具支持,允许您在数据库之间执行数据库架构比较(您可以过滤到仅指定的数据库架构)并将实时数据库中的所有对象(和配置)提取到 VS2010数据库项目,为每个对象创建一个脚本。

    Working with Database Projects

    【讨论】:

      【解决方案3】:

      一些基于

      SELECT [text] FROM [syscomments]
      

      【讨论】:

        猜你喜欢
        • 2014-08-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-12
        相关资源
        最近更新 更多