Взаимные блокировки в SQL Server 2008 R2 - PullRequest
1 голос
/ 12 августа 2011

Сервер: SQL Server 2008R2 Клиенты: Excel / ADO - 8 клиентов Аппаратное обеспечение сервера: 8 ядер / 16 ГБ Память / ОС: WinServer 2008SR2

Взаимоблокировки возникают при хранимых процедурах вставки / обновления и слияния / сопоставления.

Я много читал здесь о вставке / обновлении, и в результате я изменил мои Вставки / Обновления на Слияние / Соответствие, но я все еще получаю ОЧЕНЬ частые ошибки тупиковой ситуации (примерно раз в 10 минут) оттолько 8 клиентов, работающих в пакетном режиме, запрашивают обновления со скоростью 2 в минуту.

В отличие от этого, каждый клиент вставляет около 20 000 элементов в минуту в другую таблицу без каких-либо проблем.

Мне бы очень хотелось помочь в решении этих тупиковых ситуаций, поскольку я не думаю, что такие жалкие 8 клиентов (особенно Excel / ADO / VBA) должны быть в состоянии подчеркнуть эту БД!

Также обратите внимание, что я неВыполняйте любые команды SQL напрямую через клиентов, все команды sql вызываются через хранимые процедуры.

Мой текущий SP:

merge [dbo].[File_Level_Data] as TargetMerge
    using(select @Name_of_File as name)as source
    on (TargetMerge.Name_of_File = source.name)

when matched then
    update
    set
    XXX1  = @XXX1, 
    ZZZ25 = @ZZZ25
when not matched then
    insert
    (XXX1,
    ZZZ25
    ) values 
    (
    @XXX1,
    @ZZZ25

);

1 Ответ

0 голосов
/ 13 октября 2012

Мои тупики были вызваны курком, который я поставил там много лет назад, но не верил, что они все еще там. Как только я их уберу, тупиков больше не будет.

...