SQL Server puede experimentar infracciones de acceso al cancelar una consulta de DB2

Este artículo le ayuda a resolver el problema que se produce cuando un usuario cancela una consulta de servidor vinculado en una base de datos de IBM DB2.

Versión del producto original:   Host Integration Server 2010
Número KB original:   2761993

Síntomas

Imagine la siguiente situación:

  • Tiene un servidor vinculado que se conecta a una base de datos de IBM DB2 mediante el proveedor OLE DB para DB2.

  • La cadena de conexión DB2 incluye Rowset Cache Size el parámetro con un valor distinto de cero (por ejemplo, Rowset Cache Size=100 ).

Si un usuario intenta cancelar una consulta que se está ejecutando actualmente a través del servidor vinculado a la base de datos de IBM DB2, el proceso de SQL Server puede notificar una infracción de acceso y crear un archivo de volcado.

Causa

El problema se produce debido a un problema de sincronización en el Proveedor OLE DB de Microsoft para DB2 al cancelar una consulta en ejecución cuando la Rowset Cache Size característica está habilitada.

Solución

Cambie la cadena de conexión DB2 en el servidor vinculado para incluir el parámetro: Rowset Cache Size=0

El SQL Server debe reiniciarse después de realizar este cambio para asegurarse de que el proveedor db2 carga la nueva cadena de conexión.

Más información

El parámetro indica al proveedor de datos DB2 que pre-capturar filas de DB2 mientras procesa y devuelve filas al consumidor RowSet Cache Size de datos simultáneamente. Esta característica puede mejorar el rendimiento en operaciones masivas de solo lectura en equipos multiprocesador o de varios núcleos. El valor predeterminado de esta propiedad es 0 (tamaño de caché de conjunto de filas=0), lo que indica que la característica de captura previa opcional está "desactivada".

No se recomienda habilitar este parámetro (usar un valor distinto de cero) para escenarios que no son operaciones de lectura masiva que requieren un alto nivel de rendimiento.