T-SQL Уникальное ограничение заблокировало сервер SQL - PullRequest
1 голос
/ 09 июня 2010

Привет!Это моя таблица:

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)
    ..
    )

Я написал это ограничение, чтобы гарантировать, что комбинация my_column2 и my_column3 всегда уникальна.

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

Но потом внезапно ... БД перестала отвечать.. есть замок или что-то .. У вас есть идеи, почему?Что плохого в ограничении?

Что я уже проверил, так это то, что у меня есть некоторые заблокированные объекты, когда я выбираю * из master.dbo.syslockinfo (объединяемого с sysprocesses).После 10 минут бездействия .. этот список снова пуст, и я могу получить доступ ко всем объектам в базе данных.Weird ..

1 Ответ

1 голос
/ 09 июня 2010

Он должен заблокировать таблицу при проверке данных, чтобы увидеть, нарушает ли это ограничение или нет, в противном случае некоторые некорректные данные могут быть вставлены во время выполнения этого

Некоторые операции, такие как перестройка индекса (Конечно,не используя ONLINE в Enterprise Edition), также сделает таблицу недоступной, пока он делает это

...