Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Ошибка: Экземпляру компонента SQL Server Database Engine не удается получить ресурс LOCK в  [new]
Antykus
Member

Откуда:
Сообщений: 3
Есть хранимая процедура со следующим кодом:

USE [import_from_KLADR]
GO
/****** Object:  StoredProcedure [dbo].[import_level6_houses]    Script Date: 07/23/2014 17:24:56 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[import_level6_houses]

with recompile 
AS

BEGIN

-- тело

-- импорт ДОМОВ
Merge addrtest as dst -- в эту табличку помещаем результат
Using
(
-- выбираем данные из таблицы 
Select top (1) with ties
id,
aoguid,
houseguid,
housenum,
strucnum,
buildnum,
POSTALCODE,
UPDATEDATE
from Houses
where exists(select 1 from addrtest where addrtest.aoguid = Houses.aoguid) 
order by
 row_number() over (partition by houseguid order by UPDATEDATE desc)
)
as src 
(
id,
aoguid,
houseguid,
housenum,
strucnum,
buildnum,
POSTALCODE,
UPDATEDATE
)

on (dst.aoguid=src.houseguid) -- критерий совпадений
when matched -- совпадение
 then
	 update set 
	 name = ISNULL(src.housenum,'')+ISNULL('с'+src.STRUCNUM,'')+ISNULL('к'+src.BUILDNUM,''),
	 post_code=src.postalcode,
	 id_parent=(select ID from addrtest where dst.aoguid=src.aoguid) ,
	 updatedate=src.updatedate    
  WHEN NOT MATCHED THEN	
  -- нет такой строки, вставляем
	    INSERT 
	    (
	    name,
	    short_name,
	    atype,
	    aoguid,
	    id_parent,
	    updatedate,
	    post_code
	    )
	    VALUES 
	    (
	    ISNULL(src.housenum,'')+ISNULL('с'+src.STRUCNUM,'')+ISNULL('к'+src.BUILDNUM,''),
	    '',
	    9,
	    src.houseguid,
	    (select ID from addrtest where addrtest.aoguid=src.aoguid),
	    src.updatedate,
	    src.POSTALCODE
	    );
	    
	    
end
	


Первый запуск проходит нормально.

При повторном запуске выдаёт ошибку:
Сообщение 1204, уровень 19, состояние 4, процедура import_level6_houses, строка 10
Экземпляру компонента SQL Server Database Engine не удается получить ресурс LOCK в данный момент времени. Запустите инструкцию повторно, когда число активных пользователей уменьшится. Попросите администратора баз данных проверить конфигурацию блокировки и памяти для данного экземпляра либо выполнить проверку давно выполняющихся транзакций.
Сообщение 1204, уровень 19, состояние 6, процедура import_level6_houses, строка 10
Экземпляру компонента SQL Server Database Engine не удается получить ресурс LOCK в данный момент времени. Запустите инструкцию повторно, когда число активных пользователей уменьшится. Попросите администратора баз данных проверить конфигурацию блокировки и памяти для данного экземпляра либо выполнить проверку давно выполняющихся транзакций.

Помогите разобраться
23 июл 14, 17:26    [16348133]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка: Экземпляру компонента SQL Server Database Engine не удается получить ресурс LOCK в  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8823
Так проверьте конфигурацию и ограничения версии сервера, зависшие транзакции. Похоже, Вы исчерпали лимит блокировок.
23 июл 14, 18:22    [16348372]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка: Экземпляру компонента SQL Server Database Engine не удается получить ресурс LOCK в  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Antykus
Помогите разобраться
Вариантов может быть много.

Проверяйте настройки блокировок, не включил ли кто трейс флаги, сколько памяти занято под блокировки, не держит ли кто транзакцию с кучей блокировок, ну и на всякий случай настройки эскалации на таблицах.
EXEC sp_configure locks

dbcc tracestatus(1211,1224)

SELECT *
FROM sys.dm_os_performance_counters 
WHERE object_name LIKE '%:Memory Manager%'
  AND (counter_name LIKE 'Lock Memory%'
    OR counter_name LIKE 'Total Server Memory%%')

SELECT request_session_id, COUNT (*) num_locks
FROM sys.dm_tran_locks
GROUP BY request_session_id 
ORDER BY count (*) DESC

SELECT name, lock_escalation_desc FROM sys.tables
24 июл 14, 21:00    [16354383]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить