【问题标题】:SQL Server - Constructing a Column Definition [duplicate]SQL Server - 构造列定义 [重复]
【发布时间】:2013-12-13 07:28:52
【问题描述】:

我需要比较两个数据库并确定哪些列发生了变化。一旦我确定了以某种方式(大小、类型等)发生变化的列,我需要捕获(写入表)旧列定义和新列定义。

例如,如果使用 INFORMATION_SCHEMA.COLUMNS 表,我发现列大小已从 25 变为 50,我将需要存储两列定义。在这种情况下,它可能是“char(25)”和“char(50)”。

我可以使用 INFORMATION_SCHEMA.COLUMNS 表来识别何时发生了变化。

我遇到的问题是,一旦我确定列已更改,如何构建列定义?在这种情况下,我如何构建 'char(25)' 和 'char(50)'?

有没有什么地方可以得到这种类型的定义?如果我必须逐个构建定义,我如何确定定义的所有组件。

任何意见或建议表示赞赏。

提前致谢。

【问题讨论】:

  • 您是否意识到市场上有无数的工具可以为您进行架构比较,并创建同步脚本来更新目标,使其与源相同?

标签: sql sql-server sql-server-2008


【解决方案1】:
select table_name, column_name,
column_definition = data_type + isnull('(' + convert(varchar, character_maximum_length) + ')', '') 
from information_schema.columns

【讨论】:

    猜你喜欢
    • 2016-07-13
    • 1970-01-01
    • 2019-04-14
    • 1970-01-01
    • 2014-11-18
    • 1970-01-01
    • 2015-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多