【问题标题】:How to generate all constraints scripts如何生成所有约束脚本
【发布时间】:2011-05-24 18:59:48
【问题描述】:

我有一个要求,我必须更改我的数据库的排序规则,因为我需要 drop all the constraints and recreate them after running the collation 在我的数据库中更改脚本。我可以知道如何生成我的数据库的所有约束的脚本吗?

【问题讨论】:

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


    【解决方案1】:
    SELECT top 1 
        'ALTER TABLE '+ SCHEMA_NAME(schema_id) + '.' + OBJECT_NAME(parent_object_id) + 
        ' ADD CONSTRAINT ' + dc.name + ' DEFAULT(' + definition 
        + ') FOR ' + c.name
    FROM sys.default_constraints dc
    INNER JOIN sys.columns c ON dc.parent_object_id = c.object_id AND dc.parent_column_id = c.column_id
    

    生成所有约束的脚本

    SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS 
    

    获取数据库上的所有约束,然后过滤您的表

    【讨论】:

      【解决方案2】:

      这将为您提供数据库中的所有约束,您可以根据需要对其进行过滤:

      SELECT OBJECT_NAME(OBJECT_ID) AS NameofConstraint,
      SCHEMA_NAME(schema_id) AS SchemaName,
      OBJECT_NAME(parent_object_id) AS TableName,
      type_desc AS ConstraintType
      FROM sys.objects
      WHERE type_desc LIKE '%CONSTRAINT'
      

      我认为您可能还需要查看任何索引、统计信息等也可能阻止您删除该列。

      【讨论】:

      • 你能告诉我为所有约束生成创建脚本的确切脚本吗?
      【解决方案3】:

      这可以通过 SQL Server Management Studio 轻松完成。

      右键单击数据库并转到TasksGenerate Scripts...

      这将打开一个脚本生成向导,该向导将为您选择的任何架构构造生成 DROP 和 CREATE 脚本。

      选择你的数据库

      确保选择 Script Drop to True

      选择表格

      选择 New Query Editor Window 并单击 Finish。

      【讨论】:

      • 你能告诉我只生成约束而不生成表脚本的确切步骤吗?
      • 工具 > 选项 > sql server 对象资源管理器 > 关闭除约束之外的所有内容 > 生成它们 > 重新打开所有内容
      • 使用屏幕中提到的选项,它也会生成创建表脚本,我只想要约束脚本。
      【解决方案4】:

      您可以使用 SMO 进行类似的编程,或者更简单的是仅使用 SSMS 中的脚本向导。在对象资源管理器中转到您的数据库并右键单击它。选择任务-> 生成脚本(不是“脚本数据库为”)。在向导中,您可以确保约束已编写脚本并删除其他项目。检查生成的脚本并确保它可以满足您的需要。如果没有,请再次通过向导进行必要的调整。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-25
        • 2010-12-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多