Termino Tiempo de Espera | SQL Server Performance Forums

SQL Server Performance Forum – Threads Archive

Termino Tiempo de Espera

Buenas, tengo un problema, en mi sistema manejo registro en gran escala y cuando un codigo es modificado por otro codigo, tengo que actualizar todo, en las primeras tablas problemas no tengo, pero hay una muy pesada, mas de 1 millon de registros, y en vb me sale que termino el tiempo de espera, si hago que el tiempo de espera aumente quizas not tendria problema pero si hago eso, pongo lento a todo el mundo, mi pregunta es la siguiente: ¿Existe una forma de ejecutar un procedimiento que se ejecute en el servidor y que mi sistema no este esperando respuesta?, que se ejecute a bajo nivel, pense en triguers, pero no se que tan rapido sera teniendo en cuenta que tengo mas de 30 usuarios en linea. Muchas Gracias. Otra consulta es recomendable no mantener conexiones activas con el sql, eso me enseñaron, pero cuando corto la conexion y la vuevo a conectar cuando quiero algo, tengo un error como si el servidor demorase en permitirme conectar, exactamente tengo el problema cuando hago un llamado a varios eventos en un tiempo corto de tiempo, que me recomiendan hacer, por ahora tengo todas las conexciones activas. Antes solicitaba un procedimiento, lo ejecutaba y mataba la conexion. Jesus Aguilar
No hay una única forma de hacer lo que necesitás.
Te sugiero una: 1 Crear un procedimiento que realice el cambio en las tablas.
2 Desde VB calendarizarlo como un JOB de Agente SQL
3 Desde VB Darle Start al Job El Job correrá en SQL Server hasta que termine, vb tomará el control apenas termine de dar start al Job. El problema de la performance es otro tema, debe analizarse el procedimiento almacenado y ver que esté optimizado.
Tambien podés calendarizerlo para que corra en horarios nocturnos.

No me explique bien, esta bien la salida que me das, pero no puedo hacerlo al final del dia, ya que es un dato de vital importancia, es un dato de produccion, y tiene que ser actualizado en el momento, mas bien tenia una idea pero no se si estara bien, que tal si creo una tabla donde inserte el codigo a ser modificado con el nuevo codigo, y es posible hacer que un trabajo se desencadene en el evento insertar en esa tabla, es como hacer que se ejecute el trabajo pero por base de datos sin necesidad que yo haga algo, similar a los triguers, que por cierto no se su manejo como deberia. Otra consulta es recomendable no mantener conexiones activas con el sql, eso me enseñaron, pero cuando corto la conexion y la vuevo a conectar cuando quiero algo, tengo un error como si el servidor demorase en permitirme conectar, exactamente tengo el problema cuando hago un llamado a varios eventos en un tiempo corto de tiempo, que me recomiendan hacer, por ahora tengo todas las conexciones activas. Antes solicitaba un procedimiento, lo ejecutaba y mataba la conexion. Jesus Aguilar
Otra consulta mas, como ejecuto un trabajo desde el analizador de consultas, tengo pensado insertar en una tabla los codigos a cambiar y que se desencadene el trabajo, o mejor, si al insertar en la tabla como hago para desencadenar el trabajo, en fin, crees que mejor manejo triguers, si es eso, como hago porque la actualizacion es 3 bases de datos
La sugerencia que te di hace exactamente lo que pedís,
Ejecuta en el servidor y VB se desentiende, o sea que no espera hasta que termine su ejecución, pero no es necesario esperar hasta la noche, se ejecuta cuando vos lo solicitas desde VB. La alternativa de ejecutarlo nocturno era otra posibilidad, pero ya que no podes usarla la primera sugerencia sigue vigente. Los triggers no van a solucionar tu problema ya que VB esperará hasta que todos los cambios se realicen y puede darte nuevamente timeout. Además desde un procedimiento podés actualizar las tres bases de datos sin problemas.
Disculpame la ignorancia, como ejecuto un trabajo desde el analizador de consultas o como lo invoco de vb, veo la ayuda algo de object.start() pero no funciona, agradeceria mucho me orienten en la ejecucion de trabajos. gracias
Para arrancar un job desde el analizador de consultas ejecuta: EXEC msdb..sp_start_job ‘NOMBRE_DEL_JOB’

Ok, gracias,tambien encontre ese store, esperemos me sirva del todo, ya hice mi prueba, un trabajo que llama a un store, y este a su vez convoca los datos guardados en una tabla donde indico el codigo anterior con el nuevo codigo que lo reemplazara. Pero en caso tenga un problema con el trabajo, hay una manera que sql me responda luego el resultado, mi amigo comento que haga que sql genere un archivo de error y en vb tenga un timer que chequee ese archivo y si tiene algo, que mande mensaje de error en mi sistema, es la unica salida?.
Gracias por tu ayuda, me fue muy util para orientarme a lo que queria y lo logre. Jesus Aguilar
Para consultar el estado utilizá el procedimiento sp_help_job msdb..sp_help_job NULL, <NOMBRE_DEL_JOB> ,’JOB’ y consultá la columna "current_execution_status" que
mientras se ejecuta estará en 1. Cuando deje de estar en 1 consultá la columna "last_run_outcome"
que te dará el resultado de la última ejecución del trabajo: 0 = Error
1 = Éxito
3 = Cancelado
5 = Desconocido
]]>