2009-10-13 59 views
10

Uso de SQL Server 2005 y VB6¿Cómo resolver el problema expirado de TimeOut?

Cuando ejecuto datos anuales o más de 3 meses, aparece el error "Tiempo de espera caducado". No se está ejecutando por completo.

Mi cadena de conexión

ConnectionString = "Provider=SQLOLEDB.1;" & _ 
    "Persist Security Info=False; " & _ 
    "User ID=" & Settings.SQL_Username & _ 
    "; Password = " & Settings.SQL_Password & "; " & _ 
    "Initial Catalog=" & Settings.SQL_DatabaseName & ";" & _ 
    "Data Source=" & Settings.SQL_ServerAddress 

¿Cómo puedo solucionar este problema?

PLZ ...

+0

¿Puede mostrar la consulta que está ejecutando? Muchas veces hay cambios simples que se pueden realizar en una consulta que mejora el rendimiento. Obviamente, si haces la consulta más rápido, no tendrás que preocuparte por los tiempos de espera. –

Respuesta

17

No existe la "magia vudú negra": puede agilizar su consulta (devolver menos datos, mejorar el diseño de la base de datos, buscar y aplicar índices que hagan que sus consultas se ejecuten más rápido) o aumentar el tiempo de espera permita que la consulta se ejecute antes de que se produzca un tiempo de espera excedido.

Esas son sus dos opciones: haga su elección.

ACTUALIZACIÓN: un poco de google revela:

Dim cmd 
Set cmd = Server.CreateObject("ADODB.Command") 
cmd.CommandTimeout = 120 ' number of seconds 

Marc

+0

En ConnectionString Itself tengo que dar el tiempo de espera o seleccionar de la base de datos. Donde tengo que mencionar el tiempo de espera. Plz – Gopal

+2

Usted * no puede * resolver esto en su cadena de conexión. Trabaja en solucionar la consulta (optimización) y sigue los consejos anteriores y agrega un valor de CommandTimeout. – marcc

0

Es obvio que están tratando de llevar una gran cantidad de datos y la base de datos está tomando mucho tiempo haciendo esto. Publique su cadena de conexión para que pueda decirle qué parámetro cambiar para que pueda aumentar el tiempo de espera de la conexión.

O puede tratar de optimizar su aplicación, debería tomar tanto tiempo para que aparezcan los datos.

+0

He publicado Mi conexión Cadena. – Gopal

+3

es poco probable que el tiempo de espera de conexión sea el problema: la conexión parece estar en su lugar, pero el ** comando ** emitido agota el tiempo de espera. Necesita establecer la propiedad '.CommandTimeout' - y eso no está en la cadena de conexión –

1

Supongo que está tratando de recuperar una gran cantidad de datos y está llevando SQL Server más tiempo que el tiempo de espera predeterminado de ADO (¿30 o 40 segundos?) Para recuperar esa información.

O no son demasiados datos, pero no tienes un índice decente sobre la mesa, así que verificaría los índices contra tu consulta (el plan de ejecución es tu amigo aquí).

O es una mezcla de ambos.

¿Cuánto dura la consulta si la ejecuta directamente en SQL Management Studio?

2

Usted tiene que fijar .CommandTimeout en el comando. No funciona si lo configura en la cadena de conexión.

Cuestiones relacionadas