Buenas noches a todos. Perdonen el cross-posting, no sabia bien a bien
en dónde tendria mas probabilidades de que alguien me pudiera ayudar.
Les expongo mi caso, esperando alguien pueda ayudarme:
Tengo un programa en visual basic 6 que se conecta a una base de datos
en sql server, la cual contiene un hipercubo OLAP mismo que se pretende
llamar el programa para cargar los datos de un formulario.
La forma en que se piden los datos es:
- se tiene vinculado el servidor OLAP al servidor SQL Server (residen
en la misma máquina)
- se tiene un procedimiento almacenado en SQL Server que recibe como
parámetro una cadena que es en sí la consulta MDX que se quiere
realizar al hipercubo
- este proc. almacenado ejecuta la consulta MDX mediante SQL dinamico y
regresa un recordset bidimensional con los datos (en si son ventas por
cliente por mes de un año para atrás a la fecha)
Cuando se ejecuta desde el analizador de consultas este SP con la misma
cadena que se manda como parametro se obtienen los resultados
esperados.
Se espera que los resultados que regresa este procedimiento almacenado
sean interceptados en visual basic, para lo cual se abre una conexion
ADO (estandar) hacia el servidor SQL Server, se abre un recordset
(tambien ADODB estandar, no acabo de entender como manejar conexiones y
recordsets ADOMD multidimensionales). Para el recordset se pone como
proveedor "MSOLAP", se dan los datos del servidor SQL Server y del
hipercubo que se quiere manejar, asi como el UserID y password para
acceder al SQL Server.
Cuando el programa se ejecuta DENTRO del entorno de programación se
obtienen los datos correctamente; empero, cuando el mismo programa es
compilado y el .EXE se ejecuta se obtiene el siguiente error en una
ventana de dialogo:
<<
[ODBC SQL server driver][SQL server][SqlDumpExceptionHandler]
Process 55 generated fatal exception
c0000005 EXCEPTION_ACCESS_VIOLATION
SQL Server is terminating this process
Tras lo cual el recordset queda vacio.
No se por que el error solo se presenta con la version compilada y no
en el entorno de programacion. El servidor es un Win2000(SP4) corriendo
SQL Server (SP4) pero dicho servidor NO es un controlador de dominio -
el controlador de dominio es un servidor WinNT 4 (de hecho, el win2000
esta en su propio dominio).
La conexion ADO hacia el servidor SQL Server, por tanto, se hace
utilizando autentificacion de sql server + la propia de mi aplicacion,
en vez de usar la autentificacion de windows (que seria factible
utilizar si estuvieran en el mismo dominio). No se si tenga que ver o
no, pero creo que es un dato que pudiera ayudar.
Cualesquier ayuda que alguien pudiera ofrecerme le estare muy
agradecido
Atte.
Jose Pineda
Leer las respuestas