PDA

Ver la Versión Completa : SQL Server + Delphi se congela al ejecutar un Procedimeinto Almacenado


subzero
25-09-2010, 19:35:48
Hola.

Hace ya un tiempo realice una aplicación que interactúa con dos bases de datos en SQLServer, en una realiza consultas y en la otra aplica los registros, utilizando los componentes ADO de delphi, esta aplicación ha trabajado bien. Ahora se necesita realizar un módulo que escriba en la base de datos principal utilizando procedimientos almacenados. En lo que se guarda el encabezado en una tabla A y el detalle en la tabla B, dado que los detalles pueden llegar a 10 o más registro, llega un momento en que la aplicación se bloque y no responde. Los mensajes que muestra son los siguientes:
- Error al escribir en la dirección.
- Otras veces muestra que existe un problema de deadlocked.
- Y otras más se congela.
Desde mi equipo donde tengo instalado Delphi y sqlserver 2005, todo marcha bien accediendo a las bases de datos que se encuentran en un servidor de datos.
Al querer hacer los mismo desde otros equipos donde ha estado funcionando bien la aplicación es donde se presentan los mensajes anteriormente mencionados.
En la conexión a la base de datos en el componente TADOConnection, he colocado en la propiedad Isolationlevel: ilReadCommitted; en CusorLocation: clUseClient y en ConnectOptions: coConnectUnspecified.

Qué puede estar pasando o que estaré haciendo mal.

subzero
27-09-2010, 15:22:32
Hola, he estado revisando este asunto, sospecho que el problema es la forma como em estoy conectando sigo revisando, ya que primero muestro un splash, luego un login donde se realiza la validación del usuario, cuando salgo del o cierro el login parece que la ventana queda abierta y al cerrar la aplicación se congela la aplicación.

subzero
27-09-2010, 19:31:13
Hola.

He tomado la aplicación desde lo más básico y el problema lo tengo al momento de salir de la aplicación donde le pido que se desconencte de la base de datos... pero para conectarme lo hago a través del TADOConnection con los siguientes parametros


DM.Conexion.ConnectionString := 'Provider=SQLOLEDB.1;'+
'Password=123456;'+
'Persist Security Info=True;'+
'User ID=usuario;'+
'Initial Catalog='+Base_Datos +';'+
'Data Source=' + Servidor_BD +';'+
'Use Procedure for Prepare=1;'+
'Auto Translate=True;'+
'Packet Size=4096;'+
'Workstation ID='+GetComputerName+';'+
'Use Encryption for Data=False;'+
'Tag with column collation when possible=False';
DM.Conexion.Connected := true;

y hasta aqui todo va bien cuando salgo ad ela aplicación en un botón salir tengo

DM.Conexion.Connected := false;
if DM.Conexion.Connected = false then Application.Terminate;

Pero sigue congelado el programa y el error que hace alusión a: APPCRASH

subzero
29-09-2010, 01:57:15
Bueno luego de una revision minuciosa detecte que algunos componente ADOQuery y ADOStoredProc no estaban siendo cerrados, por lo menos ahora la aplicación no se cuelga.

Pero en el mismo proceso ahora me muestra un error que hace alusion a sqloledb.dll, dice alg como que:

Violación de acceso a la dirección 4E3B386C in module 'sqloledb.dll', read of address 00000018.

Les agradezco su valiosa ayuda.