Errores comunes del proveedor de datos para DB2
Los proveedores de datos para DB2 usan el procedimiento almacenado SQLCAMESSAGE de IBM con el que se devuelven mensajes de error detallados. Para usar esta característica, debe configurar el origen de datos a fin de que use un valor EBCDIC para el CCSID del host.
En la tabla siguiente se describen los errores de servidor DB2 que pueden producirse con las acciones que se deben llevar a cabo para solucionarlos.
SQLSTATE | SQLCODE | Message | Descripción |
---|---|---|---|
42601 | -104 | Símbolo no válido. El token no era válido o token inesperado. Se encontró un token de token <inesperado después <del texto>.> Los tokens esperados pueden incluir: <token-list>. |
Motivo: el servidor no puede ejecutar una instrucción SQL que contiene símbolos o tokens no permitidos, no válidos o inesperados. Acción: compruebe la sintaxis de SQL mediante la referencia de SQL de IBM DB2 para la plataforma y la versión de IBM DB2 específicas. Compruebe si la aplicación de consumidor de datos usa identificadores de objeto delimitados no admitidos (por ejemplo, corchetes ([<nombre-objeto>]) en lugar de usar delimitadores admitidos (comillas dobles). |
42602 | -113 | CARÁCTER NO VÁLIDO ENCONTRADO EN: <cadena>, CÓDIGO DE MOTIVO.>< Se detectó un carácter no válido en un nombre. <el identificador> contiene un carácter que no está permitido o no contiene ningún carácter. |
Motivo: el servidor no puede procesar una instrucción SET CURRENT SQLID de SQL cuando el cliente se conecta al servidor DB2. Acción: compruebe la información de conexión para asegurarse de que el valor de calificador predeterminado coincida con la colección DB2 en la que está catalogado el objeto. Para obtener más información, vea Calificador predeterminado. |
42802 | -117 | EL NÚMERO DE VALORES ASIGNADOS NO ES IGUAL QUE EL NÚMERO DE COLUMNAS ESPECIFICADAS O IMPLÍCITAS. La instrucción contiene un número incorrecto de valores. El número de valores asignados no es igual que el número de columnas o variables especificadas o implícitas. |
Motivo: el servidor no puede ejecutar una instrucción INSERT de SQL cuando el número de valores especificados no es igual que el número de columnas en las tablas. Acción: compruebe que el número de columnas coincida con los objetos de la instrucción SQL. Para ello, consulte el catálogo del sistema (por ejemplo SYSIBM.SYSCOLUMNS) o ejecute una consulta de esquema de cliente, por ejemplo, IDBSchemaRowsets::GetSchemas(DBSCHEMA_COLUMNS) en OLE DB o MsDb2Connection.GetSchema(Columns) en ADO.NET. |
22007 | -181 | LA REPRESENTACIÓN DE CADENA DE UN VALOR DATETIME NO ES UN VALOR DATETIME VÁLIDO El valor de la cadena date, time o timestamp no es válido. La representación de cadena de un valor datetime está fuera de rango. |
Motivo: el servidor no puede ejecutar la instrucción SQL cuando un valor DATETIME tiene un formato incorrecto o está fuera de rango. Acción: compruebe que los valores DATETIME estén en el rango admitido para el año (de 0001 a 9999), el mes (de 1 a 12), el día (28, 29, 30 o 31, en función del mes y de los años bisiestos), la hora (de 0 a 24, o bien 12 para EE. UU.), los minutos (de 0 a 59), los segundos (de 0 a 59) y los microsegundos (de 0 a 999999). Compruebe la información sobre la conexión para asegurarse de que la opción DateTime As Date se especificó como "true" para indicar al cliente que debe eliminar la parte de la hora de los valores de datos de Windows DateTime asignados a los valores de datos TIMESTAMP de DB2, de modo que la base de datos DB2 pueda leer dichos valores como valores de datos DATE de DB2. Para obtener más información, vea DateTime As Date. |
42704 | -204 | <esquema>.<object> es un nombre no identificado. Se detectó un nombre de objeto o restricción no definido. <name> es un nombre indefinido. |
Motivo: el servidor no puede ejecutar una instrucción SQL que haga referencia a un esquema> no válido<.<nombre del objeto>. Acción: compruebe el nombre de objeto especificado en la instrucción SQL. Compruebe la información de conexión para asegurarse de que el valor de calificador predeterminado coincida con la colección DB2 en la que está catalogado el objeto. Para obtener más información, vea Calificador predeterminado. |
42703 | -206 | <NAME> NO ES VÁLIDO EN EL CONTEXTO DONDE SE USA Nombre> de columna <no en las tablas especificadas. <name> no es válido en el contexto donde se usa. |
Motivo: el servidor no puede ejecutar una instrucción SQL en la que el nombre de una columna especificada no se corresponde a una columna de la tabla de origen o de destino, o bien de la vista a la que se hace referencia en la tabla. Acción: compruebe que las referencias de columna coincidan con los objetos de la instrucción SQL. Para ello, consulte el catálogo del sistema (por ejemplo SYSIBM.SYSCOLUMNS) o ejecute una consulta de esquema de cliente, por ejemplo, IDBSchemaRowsets::GetSchemas(DBSCHEMA_COLUMNS) en OLE DB o MsDb2Connection.GetSchema(Columns) en ADO.NET. |
08S01 | -360 | No se encuentra el recurso del host. Compruebe que el valor del catálogo inicial coincide con el nombre del recurso del host. | Motivo: el servidor no ha podido conectar el cliente al nombre de base de datos relacional (RDBNAM) de DRDA. Acción: compruebe la información de conexión para asegurarse de que el valor del catálogo inicial coincide con DB2 para el nombre de la ubicación z/OS, DB2 para la entrada del directorio de base de datos relacional de IBM i (RDBDIRE) o DB2 para el nombre de la base de datos de Windows. Para obtener más información, vea Catálogo inicial. |
42884 | -440 | NO SE ENCONTRÓ NINGÚN <TIPO> RUTINARIO POR EL NOMBRE NOMBRE DE <RUTINA> QUE TIENE ARGUMENTOS COMPATIBLES EN LA RUTA DE ACCESO ACTUAL No se encontró ninguna ruta con el nombre especificado y argumentos compatibles. No se encontró ninguna rutina autorizada denominada routine-name <> de tipo <routine-type> que tenga argumentos compatibles. |
Motivo: el servidor no puede ejecutar una instrucción CALL de SQL que contenga el número incorrecto de argumentos, o tipos de datos de parámetros no válidos, o haga referencia a un esquema> no válido<.<nombre del objeto>. Acción: compruebe el número de argumentos. Compruebe los tipos de datos de los parámetros. Compruebe el nombre de objeto especificado en la instrucción SQL. Compruebe la información de conexión para asegurarse de que el valor de calificador predeterminado coincida con la colección DB2 en la que está catalogado el objeto. Para obtener más información, vea Calificador predeterminado. |
24501 | -501 | EL CURSOR IDENTIFICADO EN UNA INSTRUCCIÓN FETCH O CLOSE NO ESTÁ ABIERTO. El nombre> del <cursor no está abierto. El cursor especificado en una instrucción FETCH o CLOSE no está abierto o una variable de cursor en una referencia de función escalar de cursor no está abierta. |
Motivo: el servidor no puede ejecutar una instrucción SELECT o CALL de SQL que necesita una instrucción FETCH o CLOSE en un elemento CURSOR que no se encuentre en estado abierto. Acción: compruebe que la aplicación no emite una instrucción COMMIT o ROLLBACK, que podría cerrar el cursor. Compruebe si hay un mensaje de devolución recibido anteriormente que podría indicar que el servidor ha cerrado de forma automática el cursor en función de un evento del sistema (por ejemplo, SQLCODE -404, -652, -679, -802, -901, -904, -909, -910, -911, -913 o -952). Compruebe la información sobre la conexión para asegurarse de que la opción AutoCommit se ha especificado en True cuando se trabaja con algunos consumidores genéricos, incluidos SQL Server Integration Services y procesador de consultas distribuidas, al usar transacciones remotas de unidad de trabajo. Para más información, vea AutoCommit. |
42501 | -551 | No autorizado para usar el objeto. No está autorizado a object-name <> en <resource-name> type <resource-type>. <authorization-ID> no tiene la autorización o privilegios necesarios para realizar la operación><en el nombre> de objeto de objeto<. |
Acción: el servidor no puede ejecutar una instrucción SELECT o CALL de SQL que necesita una instrucción CURSOR almacenada en un paquete SQL estático para el que el usuario actual no tiene autorización. El cliente depende de instrucciones SQL predefinidas en los paquetes SQL estáticos de DB2 para admitir la ejecución de instrucciones SQL SELECT. De manera predeterminada, el cliente define un paquete automáticamente si el usuario de tiempo de ejecución tiene autoridad BIND, EXECUTE y GRANT de paquete sobre la colección de DB2 especificada en la propiedad de conexión de colección de paquetes. Acción: compruebe la información de conexión para asegurarse de que el valor de Colección de paquetes coincida con la colección DB2 en la que los paquetes HIS 2010 se definen para la ejecución por el identificador de usuario actual o de forma pública. Cree manualmente paquetes HIS 2010 para la ejecución por el identificador de usuario actual o de forma pública mediante la herramienta de acceso a datos, el Asistente para orígenes de datos, los vínculos de datos o la biblioteca de acceso a datos. Conéctese a DB2 mediante un identificador de autorización que tenga privilegios para crear automáticamente paquetes HIS 2010 (privilegios CREATE, BIND y EXECUTE). Para obtener más información, vea Colección de paquetes. |
42501 42602 |
-567 -567 |
<BIND-type> AUTHORIZATION ERROR USING <auth-id> AUTHORITY PACKAGE = <package-name> PRIVILEGE = <privilege>. No se permite el nombre de autorización &1. <authorization-ID> no es un identificador de autorización válido. |
Motivo: el servidor no puede ejecutar una instrucción SELECT de SQL cuando la cuenta de usuario no tiene permiso para crear o ejecutar los paquetes DB2 necesarios. Acción: compruebe la información de conexión para asegurarse de que el valor de Colección de paquetes coincida con la colección DB2 en la que los paquetes HIS 2010 se definen para la ejecución por el identificador de usuario actual o de forma pública. Cree manualmente paquetes HIS 2010 para la ejecución por el identificador de usuario actual o de forma pública mediante la herramienta de acceso a datos, el Asistente para orígenes de datos, los vínculos de datos o la biblioteca de acceso a datos. Conéctese a DB2 mediante un identificador de autorización que tenga privilegios para crear automáticamente paquetes HIS 2010 (privilegios CREATE, BIND y EXECUTE). Para obtener más información, vea Colección de paquetes. |
42710 | -601 | EL NOMBRE (VERSIÓN O NÚMERO DE SERIE DEL VOLUMEN) DEL OBJETO QUE SE VA A DEFINIR O EL DESTINO DE UNA INSTRUCCIÓN RENAME ES IDÉNTICO AL NOMBRE EXISTENTE (VERSIÓN O NÚMERO DE SERIE DE VOLUMEN)><DEL TIPO DE OBJETO DE TIPO <>DE OBJETO. <nombre> en <el tipo> de tipo <de esquema> ya existe. El nombre del objeto que se va a crear es idéntico al nombre <> de tipo <>existente. |
Motivo: el servidor no puede asignar un nombre a un objeto cuando ese nombre ya se usa en otro objeto del mismo tipo. Acción: asigne un nombre único al objeto en comparación con los objetos de base de datos existentes. |
42721 | -725 | EL REGISTRO <> ESPECIAL EN LA UBICACIÓN <> SE PROPORCIONÓ UN VALOR NO VÁLIDO | Motivo: el servidor no puede procesar una instrucción SET CURRENT SQLID cuando esta contiene un valor no válido para el identificador de usuario o el nombre de colección. Acción: compruebe la información de conexión para asegurarse de que el valor de calificador predeterminado coincida con la colección DB2 en la que está catalogado el objeto. Para obtener más información, vea Calificador predeterminado. |
23505 | -803 | UN VALOR INSERTADO O ACTUALIZADO NO ES VÁLIDO PORQUE EL ÍNDICE DEL <ESPACIO DE ÍNDICE INDEX-name> RESTRINGE LAS COLUMNAS DE LA TABLA PARA QUE NO DOS FILAS PUEDAN CONTENER VALORES DUPLICADOS EN ESAS COLUMNAS. RID OF EXISTING ROW IS X <row identifier> Se especificó un valor de clave duplicado. Uno o varios valores de la instrucción INSERT, la instrucción UPDATE o la actualización de clave externa causada por una instrucción DELETE no son válidos porque la clave principal, la restricción única o el índice único identificado por <index-id> restringe el nombre> de tabla de tabla de la tabla <con valores duplicados para la clave de índice. |
Motivo: el servidor no puede ejecutar una instrucción INSERT o UPDATE en una tabla restringida por una instrucción UNIQUE INDEX y que resultaría en valores duplicados. Acción: compruebe que los valores de datos no infringen una restricción. Para ello, consulte el catálogo del sistema (por ejemplo SYSIBM.SYSINDEXES) o ejecute una consulta de esquema de cliente, por ejemplo, IDBSchemaRowsets::GetSchemas(DBSCHEMA_INDEXES) en OLE DB o MsDb2Connection.GetSchema(Indexes) en ADO.NET. |
51002 | -805 | NOMBRE de ubicación> DE DBRM O PACKAGE NAME<.<collection-id>.<dbrmname>.<consistency-token> NOT FOUND IN PLAN-name<>. MOTIVO DE LA RAZÓN<>. No se encontró el nombre> del paquete <de SQL en <el nombre> de la colección en el servidor DRDA. No <se encontró el nombre> del paquete. |
Motivo: el servidor no ha encontrado el paquete SQL estático de DB2 que el cliente DB2 necesita para ejecutar una instrucción SELECT de SQL dinámica. Acción: compruebe la información de conexión para asegurarse de que el valor de Colección de paquetes coincida con la colección DB2 en la que los paquetes HIS 2010 se definen para la ejecución por el identificador de usuario actual o de forma pública. Para obtener más información, vea Colección de paquetes. |
58004 | -901 | ERROR DE EJECUCIÓN DEBIDO A UN ERROR DEL SISTEMA QUE NO IMPIDE LA EJECUCIÓN CORRECTA DE LAS INSTRUCCIONES SQL SUBSIGUIENTES. Error del sistema SQL. Error de la instrucción SQL debido a un error del sistema no grave. Las instrucciones SQL subsiguientes se pueden procesar. (Motivo del <motivo>). |
Motivo: el servidor no ha ejecutado la instrucción SQL actual, pero es posible que las instrucciones SQL siguientes sean correctas. Este error puede deberse a un error de compromiso de transacción en una unidad de trabajo distribuida o un error de actualización debido a una restricción, o a que la instrucción SQL contiene una longitud no válida (0 o superior a la longitud máxima). Acción: el usuario debe comprobar el código de motivo cuando esté disponible para determinar si se necesitan acciones adicionales por parte del usuario o el administrador, y para determinar cómo evitar el error mediante la modificación de la aplicación, la transacción o el comando. |
57011 | -904 | ERROR DE EJECUCIÓN DEBIDO A UN RECURSO NO DISPONIBLE. REASON <reason-code>, TYPE OF RESOURCE <resource-type>, AND RESOURCE NAME resource-name><. Límite de recursos superado. Error de ejecución debido a un recurso no disponible. Código de motivo: <código de motivo>, tipo de recurso: <tipo> de recurso y nombre de recurso: <resource-name>. |
Motivo: el servidor no puede ejecutar la instrucción SQL porque el objeto de la misma no está disponible. Acción: compruebe que el objeto y la base de datos están disponibles y que no se encuentran interbloqueados, sin conexión o en otro estado no disponible. |
57033 | -913 | ERROR DE EJECUCIÓN DEBIDO A UN INTERBLOQUEO O TIEMPO DE ESPERA AGOTADO. REASON CODE <reason-code>, TYPE OF RESOURCE <resource-type>, AND RESOURCE NAME resource-name><. Nombre de objeto <> o fila en <el tipo de recurso tipo <resource-type>> en uso. Error de ejecución debido a un interbloqueo o tiempo de espera agotado. Motivo del código <de motivo: código> de motivo. |
Motivo: el servidor no puede ejecutar la instrucción SQL porque el objeto de la misma no está disponible. Acción: compruebe que el objeto y la base de datos están disponibles y que no se encuentran interbloqueados, sin conexión o en otro estado no disponible. Confirma o revierta la operación anterior y desconéctese de la base de datos. Compruebe el código de motivo del servidor para obtener más información sobre el estado del objeto (por ejemplo, el código de motivo 00C90088 de DB2 para z/OS indica un interbloqueo, mientras que 00C9008E indica un tiempo de espera agotado. |