Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Под управлением параллелизмом подразумевают различные техники, которые используются для сохранения целостности базы данных, когда несколько пользователей обновляют строки одновременно. Некорректная параллельность может приводить к таким проблемам, как грязные чтения, фантомные чтения и неповторяемые чтения. Драйвер Microsoft JDBC для SQL Server предоставляет интерфейсы для всех методов параллелизма, используемых SQL Server для устранения этих проблем.
Примечание.
Дополнительные сведения о параллелизме SQL Server см. в разделе "Управление параллельным доступом к данным".
Замечания
Драйвер 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), если базовая таблица содержит столбец timestamp, используется OPTIMISTIC WITH ROW VERSIONING, даже если указан OPTIMISTIC WITH VALUES. Если указан параметр OPTIMISTIC WITH ROW VERSIONING, и таблица не содержит отметок времени, используется параметр OPTIMISTIC WITH VALUES. |
| CONCUR_SS_OPTIMISTIC_CCVAL | Оптимистическое чтение/запись | Нет | База данных предполагает, что конфликты между строками маловероятны, но возможны. Целостность строк проверяется сравнением данных строк. |
Необновляемые наборы результатов
Обновляемый результирующий набор ― это результирующий набор, в котором строки могут быть вставлены, обновлены и удалены. В следующих случаях SQL Server не может создать обновляющийся курсор. и формирует исключение "Результирующий набор не является обновляемым".
| Причина | Описание | Средство |
|---|---|---|
| Объект Statement не создаётся с использованием синтаксиса JDBC 2.0 (или более поздней версии) | В JDBC 2.0 введены новые способы создания инструкций. Если используется синтаксис JDBC 1.0, результирующий набор по умолчанию доступен только для чтения. | Укажите тип результирующего набора и параллелизм при создании инструкции. |
| Объект Statement создается с использованием TYPE_SCROLL_INSENSITIVE | SQL Server создает статический курсор типа snapshot. Это отсоединяется от строк базовой таблицы, чтобы защитить курсор от изменений этих строк другими пользователями. | Используйте TYPE_SCROLL_SENSITIVE, TYPE_SS_SCROLL_KEYSET, TYPE_SS_SCROLL_DYNAMIC или TYPE_FORWARD_ONLY с CONCUR_UPDATABLE, чтобы не создавать статического курсора. |
| Конструкция таблицы исключает курсор KEYSET или DYNAMIC | В базовой таблице нет уникальных ключей, позволяющих SQL Server однозначно идентифицировать строку. | Добавьте уникальные ключи к таблице, чтобы обеспечить уникальную идентификацию каждой строки. |