Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Под управлением параллелизмом подразумевают различные техники, которые используются для сохранения целостности базы данных, когда несколько пользователей обновляют строки одновременно. Неверный параллелизм может привести к проблемам, таким как чтение фантомных данных, чтение недействительных данных и неповторяемые чтения. Драйвер 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 однозначно идентифицировать строку. | Добавьте уникальные ключи к таблице, чтобы обеспечить уникальную идентификацию каждой строки. |