2013-02-26 5 views
0

Можно ли заблокировать одну строку в таблице SQL Server с помощью JDBC?SQL Server - блокировка строк с помощью JDBC

Я использую jTDS v1.2.7 драйвера и SQL Server 2005.

Пытается с

UPDATE myTable SET timestamp=GETDATE() WHERE id='myid' 

из SQL Server Management Studio блокировки правильно приобретаемый на строке. Я могу выполнять команды SELECT и UPDATE в других строках.

Если я попробую то же самое, но с помощью JDBC вся таблица заблокирована.

Любая помощь приветствуется

+0

Почему, по-вашему, весь стол заблокирован? Что вы проверили, что это вам говорит? – muhmud

+0

Маловероятно, что это имеет какое-либо отношение к JDBC или jTDS. Вероятно, это результат конфигурации таблицы в SQL Server. Например, если [id] не имеет индекса на нем, вы получите тот же эффект. – RBarryYoung

+1

опубликуйте точный Java-код. –

ответ

1

Посмотрите на уровень изоляции сеанса.

select session_id,login_name,program_name, 
date_format,quoted_identifier,arithabort, 
ansi_null_dflt_on,ansi_defaults,ansi_warnings, 
ansi_padding,ansi_nulls,concat_null_yields_null, 
case transaction_isolation_level 
when 0 then 'Unspecified' 
when 1 then 'ReadUncomitted' 
when 2 then 'ReadCommitted' 
when 3 then 'Repeatable' 
when 4 then 'Serializable' 
when 5 then 'Snapshot' 
end as transaction_isolation_level, 
deadlock_priority 
from sys.dm_exec_sessions 

Возможно, ваш SELECT заблокирован, потому что вы используете READ COMMITTED. UPDATE будет блокировать только одну строку при выходе из транзакции.

С наилучшими пожеланиями.

+0

Настройка 'ReadUncomitted' решает проблему с инструкциями' SELECT'. Все еще не удается обновить другие строки – Daniel

Смежные вопросы