2010-06-09 2 views
1

HI! 이 내 테이블 : 그 조합 my_column2을 보장하기 위해 제약 조건을 서면으로 작성했습니다 및 my_column3 항상 고유T-SQL 고유 한 제약 조건으로 SQL 서버가 잠겼습니다.

CREATE TABLE [ORG].[MyTable]( 
    .. 
    [my_column2] UNIQUEIDENTIFIER NOT NULL CONSTRAINT FK_C1 REFERENCES ORG.MyTable2 (my_column2), 
    [my_column3] INT NOT NULL CONSTRAINT FK_C2 REFERENCES ORG.MyTable3 (my_column3) 
    .. 
    ) 

.

ALTER TABLE [ORG].[MyTable] ADD 
CONSTRAINT UQ_MyConstraint UNIQUE NONCLUSTERED 
(
    my_column2, 
    my_column3 
) 

그러나

는 갑자기 DB는 어떤 생각 이유가 있습니까 잠금이나 뭐 .. 이 .. 응답하지 ..? 제약 조건에 어떤 문제가 있습니까?

내가 이미 확인한 것은 master.dbo.syslockinfo (sysprocesses와 결합)에서 *를 선택하면 잠긴 개체가있는 것입니다. 10 분 동안 사용하지 않으면이 목록은 다시 비어 있으며 데이터베이스의 모든 개체에 액세스 할 수 있습니다. 이상한 ..

답변

1
그것이 인덱스를 재 구축 등이

일부 작업을 수행하는 동안, 그렇지 않으면 나쁜 데이터가 삽입 얻을 수 있습니다, 그것은 제약 조건을 위반하거나하지 있는지 확인하기 위해 데이터를 확인하면서 테이블을 잠글 수있다

(물론 엔터 프라이즈 에디션에서 온라인을 사용하지 않음)도이 작업을 수행하는 동안 테이블을 액세스 할 수 없게합니다.

+0

테이블은 현재 20 행과 같습니다. 왜 그렇게 오래 걸릴지 모르겠다. –

+0

큰 데이터가있는 이미지, 텍스트, ntext 또는 varchar (max)와 같은 테이블의 큰 열은 무엇입니까? – SQLMenace

+0

아니요 ..하지만 다시 한 번 sql 명령을 실행했습니다. 이제 즉시 작동하는 것 같습니다. 외래 키 제약 조건이 될 수 없었습니까? –