如何:脚本输出唯一约束创建脚本

时间:2013-04-09 08:25:57

标签: sql sql-server tsql ssms unique-constraint

我有一个Unique Constraints列表,我需要创建脚本。

有一种简单的方法吗? (比如查询sp_help,sys.objects,..) 或者我是否需要为每个约束(30多个表)手动执行此操作?

我正在使用的解决方法: 在SSMS中

  • 对象资源管理器
    • 数据库
    • 约束
      • '脚本约束为'
      • '创建到'

2 个答案:

答案 0 :(得分:1)

您可以尝试这样的事情:

SELECT 
    ColumnName = c.name,
    TableName = t.name,   
    CreateCmd = 'ALTER TABLE ' + OBJECT_SCHEMA_NAME(t.object_id) + '.' + t.name + ' ADD CONSTRAINT ' + i.name + ' UNIQUE(' + c.name + ')'
FROM 
     sys.indexes i
INNER JOIN 
     sys.index_columns ic ON i.index_id = ic.index_id AND i.object_id = ic.object_id
INNER JOIN 
     sys.columns c ON ic.column_id = c.column_id AND ic.object_id = c.object_id
INNER JOIN 
     sys.tables t ON c.object_id = t.object_id
WHERE 
     is_unique_constraint = 1

这为您提供了应用唯一约束的列和表的列表,它为您提供了新建UNIQUE CONSTRAINT

的T-SQL命令

答案 1 :(得分:1)

曾经使用过Powershell吗?

$null = [Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo");

$svr = New-Object Microsoft.SqlServer.Management.Smo.Server("YourServerInstance");

$svr.Databases["YourDatabase"].Tables[0].Indexes[0].Script();

DatabasesTablesIndexes是您可以迭代的集合。