OpenQuery для DB2/AS400 из SQL Server 2000, вызывающий блокировки

Каждое утро у нас есть процесс, который отправляет многочисленные запросы (~ 10000) к DB2 на AS400/iSeries/i6 (как бы IBM ни называла это сейчас), в последние 2 месяца операторы жалуются, что наш запрос блокирует пару файлов не позволяя им завершить свою ночную обработку. Запросы очень упрощены, например

Select [FieldName] from OpenQuery('<LinkedServerName>', 'Select [FieldName] from [LibraryName].[FieldName] where [SomeField]=[SomeParameter]')

Я не являюсь экспертом в области iSeries и хотел бы знать, есть ли у кого-нибудь понимание эскалации блокировок с точки зрения AS400/Db2. Было подтверждено, что идентификатор, вызывающий блокировку, является идентификатором, под которым мы зарегистрировали наш связанный сервер, и мы знаем, что это, скорее всего, мы, поскольку [Library] и [FileName] соответствуют запросу, который мы выдаем.

Это начало происходить совсем недавно. Возможно ли, что наши операторы select вызывают эскалацию блокировок AS400? Проблема в том, что они не выпускаются без ручного вмешательства.


person Ta01    schedule 15.10.2008    source источник


Ответы (3)


Попробуйте добавить в запрос «ТОЛЬКО ДЛЯ ЧТЕНИЯ», тогда он не будет блокировать записи при их извлечении.

person Mike Wills    schedule 15.10.2008

Запись в файлы на стороне AS/400 из рабочей программы RPG/COBOL/JPL вызовет блокировку файла (я думаю, по умолчанию). Задание не сможет получить эту блокировку, когда вы читаете. Решение, которое мы использовали, было... не читать файлы во время выполнения заданий. Мы создали большой лист расписания в Excel и поместили в него все задания серверов sql и as/400 в временные интервалы с цветовым кодированием важности и сервера. Таким образом, не будет конфликтов или устаревших файлов извлечения.

person Booji Boy    schedule 16.10.2008
comment
Чтение только для чтения не блокирует файл. Если другое задание обновляет файл, задание, пытающееся прочитать его, должно иметь проблемы с блокировкой. Но в любом случае два задания должны быть запланированы в разное время, чтобы предотвратить подобные проблемы. - person Mike Wills; 16.10.2008

Возможно, у вас есть Commitment Control, вызывающий блокировку для Repeatable Read. Проверьте соединение ODBC SQL Server, связанное с <linkedServerName>, чтобы изменить управление фиксацией.

person Paul Morgan    schedule 23.10.2008