"Infracción de acceso o de Error de sintaxis" Error con secuencia ASCII en SQL

Exención de responsabilidades de contenido KB retirado

Este artículo se refiere a productos para los que Microsoft ya no ofrece soporte técnico. Por tanto, el presente artículo se ofrece "tal cual" y no será actualizado.

Síntomas

Cuando se utiliza el controlador Microsoft ODBC para SQL Server 2000, recibirá el mensaje de error "Error de sintaxis o infracción de acceso" al enviar un parámetro de procedimiento almacenado que termina con los tres caracteres ASCII en la siguiente secuencia exacta: 0x0D, 0x1C y 0x0D.

Solución

Ahora hay una revisión compatible de Microsoft, pero sólo se diseñó para corregir el problema descrito en este artículo. Sólo se aplica a sistemas que experimenten este problema específico. Esta corrección puede recibir comprobaciones adicionales para asegurar la calidad del producto. Por lo tanto, si no se ve muy afectado por este problema, Microsoft recomienda que espere para el siguiente Microsoft Data Access componentes (MDAC) 2.8 que contenga este hotfix.

Para resolver este problema inmediatamente, póngase en contacto con los servicios de soporte técnico de Microsoft para obtener la revisión. Para obtener una lista completa de números de teléfono de servicios de soporte técnico de Microsoft e información acerca de los costos de soporte técnico, visite el siguiente sitio Web de Microsoft:Nota: En casos especiales, los costos derivados normalmente de las llamadas al soporte técnico pueden cancelarse si un profesional de soporte técnico de Microsoft determina que una actualización específica resolverá el problema. Los costos habituales de soporte se aplicarán a las preguntas de soporte técnico adicionales y problemas que no guarden relación con la actualización en cuestión.
Ahora hay una revisión compatible de Microsoft, pero sólo se diseñó para corregir el problema que se describe en este artículo. Aplíquela sólo a equipos que experimenten este problema específico.

Para resolver este problema, póngase en contacto con los servicios de soporte técnico de Microsoft para obtener la revisión. Para obtener una lista completa de números de teléfono de servicios de soporte técnico de Microsoft e información acerca de los costos de soporte técnico, visite el siguiente sitio Web de Microsoft:Nota: en casos especiales, los gastos derivados de las llamadas al soporte técnico pueden cancelarse si un profesional de soporte técnico de Microsoft determina que una actualización específica resolverá el problema. Los costos habituales de soporte se aplicarán a las preguntas de soporte técnico adicionales y problemas que no guarden relación con la actualización en cuestión.

La versión en inglés de esta revisión tiene los atributos de archivo (o posterior) que figuran en la tabla siguiente. Las fechas y horas de estos archivos se muestran en hora universal coordinada (UTC). Al ver la información del archivo, se convierte en hora local. Para encontrar la diferencia entre la hora UTC y la hora local, utilice la ficha zona horaria en la herramienta fecha y hora del Panel de Control.
   Date         Time   Version           Size  File name     Platform
------------------------------------------------------------------
14-Oct-2002 21:55 2000.81.9031.8 24,576 Odbcbcp.dll x86
14-Oct-2002 21:54 2000.81.9031.8 385,024 Sqlsrv32.dll x86

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados al principio de este artículo.

Más información

El siguiente fragmento de código de C++ muestra cómo reproducir este problema mediante la API de ODBC:
  // hdbc is an ODBC HDBC handle opened to SQL Server ODBC driver.
// Typical error handling is left out for brevity.
rc = SQLAllocStmt( hdbc, &hstmt );

// Drop and re-create stored proc.
rc = SQLExecDirect( hstmt, (SQLCHAR*) "drop procedure sp_SQLRepro", SQL_NTS );
rc = SQLExecDirect( hstmt, (SQLCHAR*)"create procedure sp_SQLRepro(@p1 text) as return 999", SQL_NTS );
rc = SQLFreeStmt( hstmt, SQL_CLOSE );

// Bind output parameter.
cbRetValue = sizeof(szReturnValue);
rc = SQLBindParameter( hstmt, 1, SQL_PARAM_OUTPUT,SQL_C_CHAR, 4, 0, 0, szReturnValue, 255, &cbRetValue );

// Prepare SQL statement with embedded ASCII characters.
ZeroMemory( szASCIIChars, sizeof(szASCIIChars) );
ZeroMemory( szSQL, sizeof(szSQL) );
szASCIIChars[0] = (char) 13;
szASCIIChars[1] = (char) 28;
szASCIIChars[2] = (char) 13;
sprintf( szSQL, "{ ? = call sp_SQLRepro( 'Testing...%s' ) }", szASCIIChars );
// The error message is returned when executing this statement.
rc = SQLExecDirect( hstmt, (SQLCHAR*) szSQL, SQL_NTS );

Propiedades

Id. de artículo: 330199 - Última revisión: 17 ene. 2017 - Revisión: 1

Comentarios