Sybase читает строку с помощью WriteNoPK, используя iSQL
Я использую Sybase SQL Anywhere 12. Позвольте мне сказать, что у меня есть пользователь таблицы со следующими подключениями к нему:
conn_name conn_id user_id table_type creator table_name index_id lock_class lock_duration lock_type row_identifier
SQL_DBC_a2a1060 3193 DBA BASE DBA user (NULL) Row Transaction WriteNoPK 37431476262
SQL_DBC_a2a1060 3193 DBA BASE DBA user (NULL) Row Transaction Intent 45309427737
SQL_DBC_a2a1060 3193 DBA BASE DBA user (NULL) Row Transaction WriteNoPK 45309427737
SQL_DBC_a2a1060 3193 DBA BASE DBA user (NULL) Row Transaction Intent 37399035938
SQL_DBC_a2a1060 3193 DBA BASE DBA user (NULL) Row Transaction WriteNoPK 37399035938
SQL_DBC_a2a1060 3193 DBA BASE DBA user (NULL) Row Transaction Intent 37399035939
Если я сейчас собираюсь выбрать пользователя SELECT * FROM из Sybase SQL Anywhere, я получу все строки и данные, как и ожидалось.
Но если я собираюсь запустить тот же SQL-оператор с использованием DBA-User в iSQL на OpenSuse 11.4, оператор выполняется, и я получаю результаты до тех пор, пока не будет выбрана строка, в которой будет выбран WriteNoPK-Lockflag. Утверждение чем заявляет следующую ошибку:
Номер сообщения сервера =8405 серьезность =21 состояние =0 строка =0 текст = ошибка SQL везде -210: для пользователя "XYZ" заблокирована строка в "пользователе", SQL: "ВЫБРАТЬ * ОТ пользователя"
Есть ли возможность чтения / выбора, даже если строка заблокирована WriteNoPK?
Большое спасибо, Макс
1 ответ
Это результат уровня изоляции вашего соединения. Строка заблокирована для обновления, что не позволяет другим процессам получить возможное "грязное чтение" (например, чтение обновленного значения, которое не было зафиксировано и может быть откатано)
Чтобы просмотреть текущий уровень изоляции:
SELECT CONNECTION_PROPERTY('isolation_level');
В этом разделе документации по SQLAnywhere рассказывается о различных настройках уровня изоляции и о том, как их изменить. Уровень изоляции 0 или 1, вероятно, позволит продолжить чтение, но с некоторым риском. Вы также можете проверить параметр изоляции снимка, чтобы увидеть, может ли он соответствовать вашим потребностям.