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


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

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

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

Примечание.

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

Замечания

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

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

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

Для SQL Server 2000 (8.x), если в базовой таблице имеется столбец метки времени, используется ПАРАМЕТР ОПТИМИСТИЧНОЕ УПРАВЛЕНИЕ ВЕРСИЯМИ СТРОК, даже если заданы ОПТИМИСТИЧЕСКИЕ ЗНАЧЕНИЯ WITH. Если указан параметр OPTIMISTIC WITH ROW VERSIONING, и таблица не содержит отметок времени, используется параметр OPTIMISTIC WITH VALUES.
CONCUR_SS_OPTIMISTIC_CCVAL Оптимистическая, чтение-запись No База данных считает состязание строк нежелательными, но возможными. Целостность строк проверяется сравнением данных строк.

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

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

Причина Description Средство
Инструкция не создается при использовании синтаксиса 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