代码之家  ›  专栏  ›  技术社区  ›  Matt

用于生成架构文本的SQL命令(类似于createto或alterto)

  •  2
  • Matt  · 技术社区  · 15 年前

    SQL Server 2005。是否有一个SQL查询将返回一个文本字段,该字段包含与执行右键单击“表”->脚本表“从SQL Server Management Studio创建到(或更改到)”中相同类型的架构信息?

    我正在寻找描述整个表的单一/平面格式,包括约束、索引等。

    我知道:

    sp_help table_name
    

    但这并不能提供我想要的单一平面格式。理想情况下,它将是可脚本化的格式,例如可以针对服务器执行的Alterto结果。

    这是一个计划的进程,该进程每晚记录表模式以签入到版本控制(SVN)。

    4 回复  |  直到 15 年前
        1
  •  1
  •   gbn    15 年前

    不是真的。表定义是列、约束等的集合。

    有一个SVN插件可以帮助调用 ScriptDB4SVN . 我没有亲自使用过,我是在道听途说。

        2
  •  1
  •   Community datashaman    7 年前

    又在网上搜索这个问题的答案 this 所以问题。它不能准确地捕获SQL管理工作室创建的所有相同数据,但足以满足我的目的(为版本控制目的编写数据库结构脚本)。

        3
  •  1
  •   RBarryYoung    15 年前

    SQL Server中没有这样的命令。这主要是因为脚本工具实际上在SMO中,而不是在SQL Server本身中。有许多免费的控制台命令行工具可以做到这一点,您可以通过xp_cmdshell调用这些工具。

    但是,如果您真的想从T-SQL中执行此操作,那么您将需要一个脚本或存储过程,该脚本或存储过程枚举所有表的属性、列、列数据类型、默认值、空值等,然后将其重新组合到创建表脚本中。这是一个 巨大的 任务。这是坏消息。好消息是,有人(Lowell Izaguirer)已经这样做了,并在本文中发布了它。( http://www.sqlservercentral.com/scripts/Miscellaneous/30730/ )在sqlservercentral.com。

    享受。

        4
  •  0
  •   marc_s HarisH Sharma    15 年前

    不是真的-您可以使用C(或vb.net)和SMO(SQL管理对象)编写数据库对象(表和所有对象)的脚本,也可以使用SQL获取表的列列表:

    SELECT * FROM INFORMATION_SCHEMA.COLUMNS
    WHERE TABLE_NAME = 'Your Table Name here'
    

    但我不知道SQL本身有什么简单的方法来为数据库对象创建/更改脚本,对不起。

    马克