Problema con Base de Datos

Reuslta que estoy realizando un aplicación en Visual Basic 6 que realiza operaciones con una Base de Datos mediante ODBC. Estoy utilizando componentes ADO y cuando abro un cierto numero de recordsets sobre la misma conexión o cuando realizo una consulta un poco compleja, me sale un mensaje de error que me dice:
"[IBM][CLI Driver][DB2/LINUX]SQL0954C La pila de aplicaciones no dispone de suficiente almacenamiento para procesar la sentencia. SQLSTATE=57011"
Esto me sale al ejecutar el método "Open" de un recordset o el método "Execute" de la conexión con una consulta SQL. No se como solucionarlo, debe de ser algún error de la IBM DB2. ¿Es posible que abriendo los recorsets conflictivos con otra conexión se solucione?.

4 respuestas

Respuesta
1
Esta es la respuesta técnica a tu problema
-ERROR [IBM][CLI Driver][DB2/6000] SQL0968C The file system is full. SQLSTATE=57011
The disk drive or file system used by the db2 database server is full. You must delete some files to free up space, delete old databases, or drop unused data from existing databases. On AIX, you have the option to increase the size of the db file system, which is usually in the /home file system.
Si no entiendes el Giri dímelo ;)
Y esto es un consejo de la experiencia en casos similares sin seguir a rajatabla lo de arriba debido a que tu problema puede ser también que en el momento de ejecutar los recordset que dices "conflictivos" tienes otros recordsets abiertos y la pila no puede recuperar los registros necesarios para solucionar esto básicamente se trata de cerrar los recordset una vez has obtenido los datos necesarios.
Como consejo sin saber como es tu aplicación si tu problema es que necesitas múltiples datos de distintos recordset es que almacenes en recordset desconectados (o en matrices "menos recomendado")
Para más información técnica sobre el problema eso si en ingles puedes mirar aquí
http://www-3.ibm.com/software/webservers/siteanalyzer/doc/Infocenter/web/en/guide/r-trouble.html
Vaya, muchas gracias por tu aclaración, te debo una, voy a icluirte en mi lista de expertos favoritos (tienes el honor de ser el primero, je je), aunque ya he resuelto el problema, solo he tenido que abrir el recorset que daba error sobre un nuevo objeto ADODB.Connection, pero gracias de todos modos por tu fabulosa respuesta, ahí va mi 5.
Respuesta
1
AL parecer el error es más de análisis, hay varios parámetros a tener en cuenta:
- El Driver de la base de datos que está manejando... Access, Paradox, Dbase, FoxPro!.
- La liberación de los Objetos Command, los cuales tienen el código o instrucciones SQL que se ejecutaran... Son comandos SQL.
>>>>
Command cmd = New ADODB.Command;
cmd.CommandText = "SELECT * from pensionados"
>>>>
Es necesarios liberar los recorsets que no necesite en el momento esto es...
>>>>
Set NombreRecordset = Nothing 'libererar la memoria
NombreRecordset.close
>>>>
Los componentes ActiveX Data Objects (ADO) le permite escribir una aplicación para tener acceso a un servidor de bases de datos y manipular los datos a través de un proveedor de bases de datos OLE. Las ventajas principales de ADO son su facilidad de uso, su gran velocidad, el bajo consumo de memoria y la pequeña ocupación en disco. ADO es compatible con características clave en la creación de aplicaciones cliente/servidor.
Cuando se utilizan con algunos proveedores (como Microsoft ODBC Provider para OLE DB junto con Microsoft SQL Server), se pueden crear objetos Recordset independientemente de un objeto Connection definido previamente pasando una cadena de conexión al método Open. ADO sigue creando un objeto Connection, pero no asigna dicho objeto a una variable de objeto. Sin embargo, si se están abriendo varios objetos Recordset en la misma conexión, se tiene que crear y abrir explícitamente un objeto Connection; así se asigna el objeto Connection a una variable de objeto. Si no se utiliza dicha variable de objeto cuando se abren los objetos Recordset, ADO crea un nuevo objeto Connection por cada nuevo Recordset, incluso si se pasa la misma cadena de conexión.
Se pueden crear tantos objetos Recordset como sea necesario
<Tomado de Recordset, objeto (ADO) de MSDN Labrery>
Okey! Estudia la respuesta y dime como te fue!
Éxitos!
Muchas gracias por tu respuesta, ha sido de gran ayuda aunque digamos que ya lo he solucionado creando otro objeto "Connection" y abriendo el recordset sobre él. De todas formas al leer lo tuyo se me ha ocurrido otra cosa y por eso te agradezco mucho tu respuesta. Muchas Gracias y feliz navidad y prospero año nuevo. :-)
Respuesta
1
Pues por lo que muestra, o bien has abierto una select o un registro descomunalmente grande o bien el servidor no tiene demasiado espacio libre. Por lo tanto la cosa es probar con selects más concretas y si tienes acceso al server (o se lo dices al administrador) ver el espacio que le queda libre para ello.
Respuesta
1
Lo siento pero no te puedo ayudar con DB2.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas