OpenQuery para DB2 / AS400 do SQL Server 2000 fechaduras causando
-
03-07-2019 - |
Pergunta
Todas as manhãs temos um processo que emite numerosas consultas (~ 10000) para DB2 em um AS400 / iSeries / i6 (qualquer que seja a IBM chama de hoje em dia), nos últimos 2 meses, os operadores têm-se queixado que a nossa consulta fechaduras um par de arquivos impedindo-os de completar seu processamento noturno. As consultas são muito simplisitic, por exemplo
Select [FieldName] from OpenQuery('<LinkedServerName>', 'Select [FieldName] from [LibraryName].[FieldName] where [SomeField]=[SomeParameter]')
Eu não sou um especialista no lado iSeries da casa e queria saber se alguém tinha alguma visão sobre o escalonamento de bloqueios de uma perspectiva AS400 / DB2. O ID que está causando o bloqueio foi confirmado para ser o ID registramos nosso servidor vinculado como e sabemos seu mais nos provavelmente porque o [Biblioteca] e [nome do arquivo] são consistentes com a consulta estamos a emitir.
Esta já começou a acontecer recentemente. É possível que nossas declarações select, que estão causando o AS400 para escalar bloqueios? O problema é que eles não estão sendo liberados sem intervenção manual.
Solução
Tente adicionar "FOR READ ONLY" para a consulta, então não vai bloquear registros como você recuperá-los.
Outras dicas
Grava para os arquivos do AS / 400 lateral de um RPG / programa de trabalho COBOL / JPL irá causar um bloqueio de arquivo (por padrão eu acho). O trabalho será incapaz de obter esse bloqueio quando você está lendo. A solução que usamos foi ... não ler os arquivos quando os trabalhos estão sendo executados. Criamos uma folha de agenda grande no excel e colocar todos os servidores SQL e AS / 400 de postos de trabalho nele em tempos ranhuras w / codificação de importância e servidor de cor. Dessa forma, qualquer conflito ou a partir de arquivos de extrato de data qualquer.
Você pode ter controle Compromisso causando um bloqueio para a Leitura Repetida. Verifique a conexão ODBC SQL Server associado com <linkedServerName>
para mudar o controle de compromisso.