Visual Basic - Error al ejecutar función en SQL Server

Life is soft - evento anual de software empresarial
 
Vista:

Error al ejecutar función en SQL Server

Publicado por Matías Freire (421 intervenciones) el 02/08/2006 03:10:25
Hola Gente....

Les escribo porque estoy teniendo un problema que me está comiendo la cabeza. Tengo una función en una base SQLServer, que devuelve un conjunto de datos. cuando quiero crear un recordset de ADO desde VB con esa función, se queda un largo rato, y me termina dando un error en tiempo de ejecución (-2147217871 "Terminó el tiempo de espera"). He probado con hasta 160 seg. en los timeout, pero nada funciona.

Les aclaro que puedo conectarme a la base perfectamente, y que la función también funciona, ya que la pruebo desde el QueryAnalyzer y anda OK.

acá les mando el código con el que estoy probando:

Private Sub Command7_Click()
Dim cn As New ADODB.Connection
Dim sql As String
Dim rs As New ADODB.Recordset

cn.ConnectionTimeout = 160
cn.CommandTimeout = 160
cn.ConnectionString = "Provider=SQLOLEDB.1;Password=5s2r_cl1r3n;Persist Security Info=True;User ID=user_inmuebles;Initial Catalog=Inmuebles;Data Source=AGSMS-TPDB03"
cn.Open
sql = "SELECT * FROM dbo.F_Totales_ClarinGlobal('20060801','20060801')"


rs.CursorLocation = adUseClient
rs.Open sql, cn, adOpenStatic, adLockReadOnly

MsgBox "fin"

End Sub

por favor, si pueden darme una mano sobre qué estoy haciendo mal, desde ya se los voy a agradecer.

Saludos!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Error al ejecutar función en SQL Server

Publicado por Luis Hansel (29 intervenciones) el 08/08/2006 23:56:26
Saludos Matías:

No encuentro algún error en tu código. Me parece que lo estás haciendo bien.

Lo que puedo hacer es sugerirte otra forma de llenar el recordset:

Set rs = cn.Execute(sql)

En teoría debe funcionar. Te devolverá un recordset de sólo lectura con las especificaciones que ya habías parametrizado antes.

Pruebalo y dime si resultó bien.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error al ejecutar función en SQL Server

Publicado por Matías Freire (421 intervenciones) el 09/08/2006 01:03:20
Muchas Gracias por tu ayuda Luis...

Pero ya lo pude solucionar. En realidad no existía ningún problema más que el que me marcaba el mensaje de error. Paso a explicarte: Yo como máximo, había puesto el Time Out en 160 segundos (2 min. 40seg), lo cual me parecía un tiempo más que lógico. Resultó ser que la consulta tardaba 3min. 45seg. en devolver los datos (eso lo vi, cuando mi jefe probó la consulta delante mío con el Query Analyzer, y vi que el tiempo que tardaba era una bestialidad).

Simplemente le aumenté el TimeOut, y salió andando.

Nuevamente, Muchas Gracias por haberte molestado en contestar mi pregunta. En lo que pueda ayudarte yo, ya sabes mi mail.

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error al ejecutar función en SQL Server

Publicado por Luis Hansel (29 intervenciones) el 09/08/2006 21:58:59
Saludos Matías:

Debo advertirte que la solución que encontraste puede ser temporal. Es decir, ¿Que sucederá cuando el tiempo de la consulta se incremente otra vez? Asumo que tu base de datos está creciendo, por lo tanto mi afirmación es posible.

Lo que deberías hacer es incrementar el TimeOut indefinidamente:

cn.ConnectionTimeout = 0

Con esto no tendrá tiempo límite y por tanto no deberás ir al código fuente por problemas de espera en el tiempo de respuesta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error al ejecutar función en SQL Server

Publicado por Matías Freire (421 intervenciones) el 10/08/2006 00:43:52
Nuevamente muchas gracias por tu respuesta, y tendré en cuenta tu nueva observación. Es interesante

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error al ejecutar función en SQL Server

Publicado por josaalo (1 intervención) el 24/01/2007 17:31:50
gracisas amigos me salvaron de una emergencia.....pues funciona mejor con el
cn.ConnectionTimeout = 0 graxis
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error al ejecutar función en SQL Server

Publicado por Eric Flores (1 intervención) el 28/02/2007 18:00:26
Recurre a lo siguiente

Private Sub Command7_Click()
Dim cn As New ADODB.Connection
Dim sql As String
Dim rs As New ADODB.Recordset

cn.ConnectionString = "Provider=SQLOLEDB.1;Password=5s2r_cl1r3n;Persist Security Info=True;User ID=user_inmuebles;Initial Catalog=Inmuebles;Data Source=AGSMS-TPDB03"
cn.CommandTimeout = 0 (es ilimitado el tiempo)
cn.Open
sql = "SELECT * FROM dbo.F_Totales_ClarinGlobal('20060801','20060801')"

rs.CursorLocation = adUseClient
rs.Open sql, cn, adOpenStatic, adLockReadOnly

MsgBox "fin"

End Sub

Espero te funcione
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error al ejecutar función en SQL Server

Publicado por edwin (1 intervención) el 26/10/2007 21:26:15
Que tal, no se si hallaste la solucion a tu problema porque tengo el mismo problema a ver si me puedes ayudar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error al ejecutar función en SQL Server

Publicado por Matias Freire (421 intervenciones) el 26/10/2007 22:14:55
Edwin...

Como ya me respondieron en su momento... la solución está en colocar el

cn.ConnectionTimeout = 0

saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error al ejecutar función en SQL Server

Publicado por NEOXL (1 intervención) el 22/11/2007 15:53:15
YO TENGO UN PROBLEMA SIMILAR AUNQUE YA TENGO CONFIGURADO DESDE HACE MUCHO TIEMPO cn.ConnectionTimeout = 0 .......ALGUNA OTRA SUGERENCIA
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error al ejecutar función en SQL Server

Publicado por Matías Freire (421 intervenciones) el 22/11/2007 16:17:52
NEOXL... la propiedad ConnectionTimeOut especifica el tiempo de espera máximo para conectarse con la base. Si tu problema es al ejecutar una consulta, la propiedad que debes modificar es "CommandTimeout", poniéndole también su valor a 0.

Saludos!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error al ejecutar función en SQL Server

Publicado por cynthia (1 intervención) el 07/01/2009 14:09:44
Gente, me sale el mismo error tambien, tengo configuradas ambas propiedades:
dbconn.CommandTimeout = 0
dbconn.ConnectionTimeout = 0
que puedo hacer??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar