2013-04-09 3 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(); 

Databases, TablesIndexes는 반복 할 수 모음입니다.