Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Store Procedure mediante .bat

Estas en el tema de Store Procedure mediante .bat en el foro de SQL Server en Foros del Web. Buenos dias gente del foro, necesito realizar la actualizacion de los indices de una base de datos montada en SQL Server 2005 Express. Tengo el ...
  #1 (permalink)  
Antiguo 30/01/2013, 08:37
 
Fecha de Ingreso: octubre-2008
Ubicación: Bs. As., ARG
Mensajes: 203
Antigüedad: 15 años, 6 meses
Puntos: 6
Store Procedure mediante .bat

Buenos dias gente del foro, necesito realizar la actualizacion de los indices de una base de datos montada en SQL Server 2005 Express.
Tengo el SP que realiza la consulta y reacomoda los indices con éxito. El tema es que a la hora de automatizar la tarea mediante un arhivo .bat mediante el Task Sheduler no tengo éxito, me devuelve:

(0x1)

Lei en algun que otro foro que esto podia ser por la ruta al archivo ejecutable, pero ya corregi ese asunto. Tal vez el problema este en la sentencia del .bat?

Código:
Sqlcmd -S NOMBRE_SERVIDOR -d BASE_DE_DATOS -u USUARIO -p CONTRASEÑA "exec ReIndexing"
  #2 (permalink)  
Antiguo 30/01/2013, 09:18
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Store Procedure mediante .bat

creo que te falta algo.....

Sqlcmd -S NOMBRE_SERVIDOR -d BASE_DE_DATOS -u USUARIO -p CONTRASEÑA
-q "exec ReIndexing"


si abres la linea de comandos (cmd) y le das c:\sqlcmd -? podras ver las opciones que acepta el comando :)

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 30/01/2013, 09:35
 
Fecha de Ingreso: octubre-2008
Ubicación: Bs. As., ARG
Mensajes: 203
Antigüedad: 15 años, 6 meses
Puntos: 6
Respuesta: Store Procedure mediante .bat

Cita:
Iniciado por Libras Ver Mensaje
creo que te falta algo.....

Sqlcmd -S NOMBRE_SERVIDOR -d BASE_DE_DATOS -u USUARIO -p CONTRASEÑA
-q "exec ReIndexing"


si abres la linea de comandos (cmd) y le das c:\sqlcmd -? podras ver las opciones que acepta el comando :)

saludos!
Exacto Libras, eso es lo que faltaba. Finalmente ejecute el SP sin usuario y contraseña, quedando así el bat de esta manera y funcionando:

Código:
Sqlcmd -S NOMBRE_SERVIDOR -d BASE_DE_DATOS -q "exec ReIndexing"
El tema es que ahora el task no funciona.
Tildo las casillas "ejecutar si el usuario está conectado o no" y "No guardar contraseña. La tarea tendrá acceso a recursos del equipo local"
De esta manera el task queda en "Running" y nunca termina...

Cuando configuro el task tildado la casilla "ejecutar si el usuario esta conectado" y lo hago correr, funciona (abre la consola, ejecuta el SP... pero de todas formas también devuelve un código 0x000013A).

Alguna idea de que puedo estar haciendo mal?
  #4 (permalink)  
Antiguo 30/01/2013, 09:51
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Store Procedure mediante .bat

como estas scheduleando tu bat? digo he ejecutado muchos procesos con sqlcmd y bat y no habia tenido ese problema que mencionas, tu procedure desde el sql manager se ejecuta bien?
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 30/01/2013, 11:00
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Store Procedure mediante .bat

scheduleando !!!, Tu si que le pones en toda la monja a nuestro lenguaje......saludos
__________________
MCTS Isaias Islas
  #6 (permalink)  
Antiguo 30/01/2013, 11:07
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Store Procedure mediante .bat

Cita:
Iniciado por iislas Ver Mensaje
scheduleando !!!, Tu si que le pones en toda la monja a nuestro lenguaje......saludos
lo se lo se :P
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 30/01/2013, 11:11
 
Fecha de Ingreso: octubre-2008
Ubicación: Bs. As., ARG
Mensajes: 203
Antigüedad: 15 años, 6 meses
Puntos: 6
Respuesta: Store Procedure mediante .bat

Cita:
Iniciado por Libras Ver Mensaje
como estas scheduleando tu bat? digo he ejecutado muchos procesos con sqlcmd y bat y no habia tenido ese problema que mencionas, tu procedure desde el sql manager se ejecuta bien?
En el Management Studio se ejecuta bien. De hecho también ejecute la sentencia del bat en el Run del inicio, y abrio la consola SQLCMD, ejecuto el SP y arrojo que se han actualizado las estadísticas de todas las tablas.
De esta manera descarto que sea el bat.

Ahora logre hace andar el task, solo me falta agregar a la sentencia del archivo un EXIT para que la ventana se cierre. Lo intente con @EXIT Y echo @EXIT, pero esto me arrojaba un error (0x1) en el task.
  #8 (permalink)  
Antiguo 30/01/2013, 11:39
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Store Procedure mediante .bat

a ver a ver como esta el codigo de tu bat? para que necesitas un exit?
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #9 (permalink)  
Antiguo 30/01/2013, 11:44
 
Fecha de Ingreso: octubre-2008
Ubicación: Bs. As., ARG
Mensajes: 203
Antigüedad: 15 años, 6 meses
Puntos: 6
Respuesta: Store Procedure mediante .bat

Cita:
Iniciado por Libras Ver Mensaje
a ver a ver como esta el codigo de tu bat? para que necesitas un exit?

Código:
Sqlcmd -S SERVIDOR -d BASE_DE_DATOS -q "exec ReIndexing" exit
Cuando se ejecuta el bat queda la ventana con los resultados del SP abierta, la idea es que se cierre una vez ejecutado.
  #10 (permalink)  
Antiguo 30/01/2013, 11:49
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Store Procedure mediante .bat

y eso lo ejecutas desde un archivo .bat?

si lo haces desde un bat quedaria algo asi:




echo off

Sqlcmd -S SERVIDOR -d BASE_DE_DATOS -q "exec ReIndexing"

esto lo guardas en texto plano como archivo.bat

luego lo ejecutas desde cmd

c:\archivo.bat

y se abre la ventana y luego se cierra, si lo pones en una tarea programada(scheduleada jajajaja) entonces ni aparecera la ventana
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #11 (permalink)  
Antiguo 30/01/2013, 12:02
 
Fecha de Ingreso: octubre-2008
Ubicación: Bs. As., ARG
Mensajes: 203
Antigüedad: 15 años, 6 meses
Puntos: 6
Respuesta: Store Procedure mediante .bat

Cita:
Iniciado por Libras Ver Mensaje
si lo pones en una tarea programada(scheduleada jajajaja) entonces ni aparecera la ventana
Asi lo tengo. Acabo de cerrar la cesión en el escritorio remoto, con la tarea programada (scheduleada) a pocos minutos de ejecutarse y cha chan...
cuando inicie sesion nuevamente en el escritorio remoto ahi estaba la consola SQLCMD abierta, con el SP ejecutado y los resultados. ?!
  #12 (permalink)  
Antiguo 30/01/2013, 12:18
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Store Procedure mediante .bat

si le pones el echo off, tu query manda imprimir algo a pantalla? se me hace raro, que version de windows usas?
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #13 (permalink)  
Antiguo 30/01/2013, 12:38
 
Fecha de Ingreso: octubre-2008
Ubicación: Bs. As., ARG
Mensajes: 203
Antigüedad: 15 años, 6 meses
Puntos: 6
Respuesta: Store Procedure mediante .bat

El .bat lo llamo en el Schedule mediante la pestaña acciones, selecciono "Start a program", "Program/script:" archivo.bat, y despues en "Start in": "C:\"

Puse el echo off en la primera linea del .bat, la version es Windows Server 2008 R2.

Ejecuta el .bat, se abre la consola y muestra el echo off, los resultados del SP y luego del mensaje donde me dice que las estadisticas de todas las tablas se han actualizado con exito, muestra el 1>
  #14 (permalink)  
Antiguo 30/01/2013, 12:45
 
Fecha de Ingreso: octubre-2008
Ubicación: Bs. As., ARG
Mensajes: 203
Antigüedad: 15 años, 6 meses
Puntos: 6
Respuesta: Store Procedure mediante .bat

Si bien el bat funciona, y ejecuta el SP el task reporta el siguiente codigo de error (0x000013A)
  #15 (permalink)  
Antiguo 30/01/2013, 13:00
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Store Procedure mediante .bat

¿que hace tu store procedure?
__________________
MCTS Isaias Islas
  #16 (permalink)  
Antiguo 30/01/2013, 13:04
 
Fecha de Ingreso: octubre-2008
Ubicación: Bs. As., ARG
Mensajes: 203
Antigüedad: 15 años, 6 meses
Puntos: 6
Respuesta: Store Procedure mediante .bat

Cita:
Iniciado por iislas Ver Mensaje
¿que hace tu store procedure?
Actualiza los indices de una tabla.


Código:
USE [base_de_datos]
GO
/****** Objeto:  StoredProcedure [dbo].[ReIndexing]    Fecha de la secuencia de comandos: 01/30/2013 15:59:18 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		Developer
-- Create date: 
-- Description:	Actualización de indices.
-- =============================================
ALTER PROCEDURE [dbo].[ReIndexing] 
	-- Add the parameters for the stored procedure here
	  
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- Insert statements for procedure here

EXEC sp_MSforeachtable @command1="print '?' DBCC DBREINDEX ('?', ' ', 80)"
EXEC sp_updatestats
END
  #17 (permalink)  
Antiguo 30/01/2013, 13:10
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Store Procedure mediante .bat

de nuevo, no se lee la informacion del comando,

si cambiamos a esto:

Sqlcmd -S SERVIDOR -d BASE_DE_DATOS -Q "exec ReIndexing"

veras hermosos resultados

again:

si abres la linea de comandos (cmd) y le das c:\sqlcmd -? podras ver las opciones que acepta el comando :)

[-q "consulta de línea de comandos"] [-Q "consulta de línea de comandos" y salir]
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Última edición por Libras; 30/01/2013 a las 13:34
  #18 (permalink)  
Antiguo 30/01/2013, 13:12
 
Fecha de Ingreso: octubre-2008
Ubicación: Bs. As., ARG
Mensajes: 203
Antigüedad: 15 años, 6 meses
Puntos: 6
Respuesta: Store Procedure mediante .bat

Cita:
Iniciado por Libras Ver Mensaje
y un job? no funciona?
Mmm tengo una versión express de SQL Server 2005. Lo peor es que no encuentro casi nada de info del codigo de error que reporta el task.
  #19 (permalink)  
Antiguo 30/01/2013, 13:42
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Store Procedure mediante .bat

de nuevo, no se lee la informacion del comando,

si cambiamos a esto:

Sqlcmd -S SERVIDOR -d BASE_DE_DATOS -Q "exec ReIndexing"

veras hermosos resultados

again:

si abres la linea de comandos (cmd) y le das c:\sqlcmd -? podras ver las opciones que acepta el comando :)

[-q "consulta de línea de comandos"] [-Q "consulta de línea de comandos" y salir]
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #20 (permalink)  
Antiguo 30/01/2013, 14:05
 
Fecha de Ingreso: octubre-2008
Ubicación: Bs. As., ARG
Mensajes: 203
Antigüedad: 15 años, 6 meses
Puntos: 6
Respuesta: Store Procedure mediante .bat

Cita:
Iniciado por Libras Ver Mensaje
de nuevo, no se lee la informacion del comando,

si cambiamos a esto:

Sqlcmd -S SERVIDOR -d BASE_DE_DATOS -Q "exec ReIndexing"

veras hermosos resultados

again:

si abres la linea de comandos (cmd) y le das c:\sqlcmd -? podras ver las opciones que acepta el comando :)

[-q "consulta de línea de comandos"] [-Q "consulta de línea de comandos" y salir]
Mil gracias Libras!! ahora si.

La única y ultima duda que tengo: con respecto a la actualización de los indices, esta bien ejecutar el tag y actualizarlos una vez por día o es demasiado, q opinan? (el sistema del cliente modifica la base de datos con bastante regularidad)
  #21 (permalink)  
Antiguo 30/01/2013, 14:11
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Store Procedure mediante .bat

creo que deberias de antes de hacer una reindexacion revisar el indice de fragmentacion de los indices, asi podrias hacer que los indices mayores a 30% sean reindezados cada vez que lo necesiten y podrias dejar este proceso ejecutandose una vez al dia :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #22 (permalink)  
Antiguo 30/01/2013, 15:35
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Store Procedure mediante .bat

Desde luego !!

Ademas de que con ejecutar estas 2 lineas, basta

EXEC sp_MSforeachtable @command1="DBCC DBREINDEX ('?', ' ', 80)"
EXEC sp_updatestats
__________________
MCTS Isaias Islas

Etiquetas: bat, mediante, procedure, server, sql, store
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:13.