Поделиться через


Основные сведения об управлении параллелизмом

Скачать драйвер JDBC

Под управлением параллелизмом подразумевают различные техники, которые используются для сохранения целостности базы данных, когда несколько пользователей обновляют строки одновременно. Неверный параллелизм может привести к проблемам, таким как чтение фантомных данных, чтение недействительных данных и неповторяемые чтения. Драйвер Microsoft JDBC Driver для SQL Server реализует интерфейсы всех механизмов параллелизма, используемых SQL Server для разрешения этих проблем.

Примечание

Дополнительные сведения о параллелизме SQL Server см. в разделе "Управление параллельным доступом к данным".

Remarks

Драйвер JDBC поддерживает следующие типы параллелизма.

Тип параллелизма Характеристики Блокировки строк Описание
CONCUR_READ_ONLY Только для чтения нет Обновление посредством курсора не разрешается, недопустима блокировка в отношении строк, входящих в результирующий набор.
CONCUR_UPDATABLE Оптимистическая, чтение-запись нет База данных считает состязание строк нежелательными, но возможными. Целостность строк проверяется сравнением отметки времени.
CONCUR_SS_SCROLL_LOCKS Пессимистическая, чтение-запись Да База данных считает состязание строк вероятным. Целостность строк обеспечивается блокировкой строк.
CONCUR_SS_OPTIMISTIC_CC Оптимистическая, чтение-запись нет База данных считает состязание строк нежелательными, но возможными. Целостность строк проверяется сравнением отметки времени.

Для SQL Server 2005 (9.x) и более поздних версий сервер заменяет это значение на CONCUR_SS_OPTIMISTIC_CCVAL, если таблица не содержит столбец меток времени.

Для версии SQL Server 2000 (8.x), если базовая таблица содержит столбец меток времени, используется параметр OPTIMISTIC WITH ROW VERSIONING, даже если указан параметр OPTIMISTIC WITH VALUES. Если указан параметр OPTIMISTIC WITH ROW VERSIONING, и таблица не содержит отметок времени, используется параметр OPTIMISTIC WITH VALUES.
CONCUR_SS_OPTIMISTIC_CCVAL Оптимистическая, чтение-запись нет База данных считает состязание строк нежелательными, но возможными. Целостность строк проверяется сравнением данных строк.

Результирующие наборы не обновляются

Обновляемый результирующий набор ― это результирующий набор, в котором строки могут быть вставлены, обновлены и удалены. В следующих случаях служба SQL Server не может создать обновляемый курсор и формирует исключение "Результирующий набор не является обновляемым".

Причина Описание Средство
Инструкция не создается при использовании синтаксиса JDBC 2.0 (или более поздней версии) В JDBC 2.0 введены новые способы создания инструкций. Если используется синтаксис JDBC 1.0, результирующий набор по умолчанию доступен только для чтения. Укажите тип результирующего набора и параллелизм при создании инструкции.
Инструкция создается при помощи TYPE_SCROLL_INSENSITIVE SQL Server создает статический курсор моментального снимка. Курсор отключается от строк базовой таблицы, чтобы защитить курсор от обновления строк другими пользователями. Используйте TYPE_SCROLL_SENSITIVE, TYPE_SS_SCROLL_KEYSET, TYPE_SS_SCROLL_DYNAMIC или TYPE_FORWARD_ONLY с CONCUR_UPDATABLE, чтобы не создавать статического курсора.
Конструкция таблицы исключает курсор KEYSET или DYNAMIC Базовая таблица не содержит уникальных ключей, позволяющих SQL Server уникально идентифицировать строки. Добавьте уникальные ключи к таблице, чтобы обеспечить уникальную идентификацию каждой строки.

См. также раздел

Управление результирующими наборами с помощью JDBC Driver