2013-04-09 63 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你可以遍歷集合。