2013-04-09 28 views
1

我有我需要创建脚本的唯一约束列表。如何:脚本出独特的约束创建脚本

有没有简单的方法来做到这一点? (类似查询sp_help,sys.objects,..) 或者我是否需要手动为每个约束(在30多个表上)执行此操作?

解决方法我现在用的那一刻: 在SSMS

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

回答

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 

这样,您就唯一约束应用于列和表的列表,和它给你的T-SQL命令新创建UNIQUE CONSTRAINT

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你可以遍历集合。