Ejecutar consultas automáticamente en MS SQL Studio cada hora

13

Apoyo una aplicación en una gran empresa, una de mis funciones es limpiar los datos. Hay una consulta que necesito ejecutar cada hora, y me gustaría automatizarla. Debido a las políticas de la organización, no puedo crear trabajos del Agente SQL Server o modificar el esquema, solo puedo manipular los datos.

Un sin fin

WHILE(1=1)
BEGIN 
WAITFOR DELAY '01:00';
--do work
END

hace el trabajo por mí, pero me encojo de hombros ante la idea de una conexión perma-open.

Idealmente, escribiría el propio MS SS para ejecutar un código dado cada hora, pero no estoy seguro de si eso es posible.

¿Hay alguna solución a este problema?

Ivan Koshelev
fuente
1
¿Puedes usar Windows Sceduler en tu PC?
Sepupic
12
Pídale a alguien que tenga permiso que lo programe para usted.
Señor Magoo
@sepupic Esa es mi próxima tierra de investigación, si nada en MS SS puede ayudarme.
Ivan Koshelev
Estoy de acuerdo. Me sentiría muy incómodo al ejecutar código de bucle en mi computadora cliente. ¿Qué pasa si su PC se estrelló, alguien desenchufó etc. He trabajado en ambientes similares donde los trabajos de SQL no estaban disponibles para los equipos de aplicaciones - porque teníamos una opción alternativa de utilizar AutoSys u otra herramienta de programación que se ejecuta en un servidor de aplicaciones. ¿Intenta descubrir cómo se gestionan otras tareas programadas? ¿Otra solución puede ser usar SQL Server Reporting Services ? No es ideal, lo sé ...
Terry C
99
La solución correcta es ir a los DBA y hacer que creen un trabajo del Agente SQL Server para ejecutar esta limpieza cada hora. Luego, descubra por qué obtiene datos en la base de datos que necesitan "limpieza" con tanta frecuencia y solucione eso .
alroc

Respuestas:

22

Tu amigo es sqlcmd (Microsoft Technet)

  1. Cree un archivo SQL con el script requerido para ejecutar su trabajo de limpieza
  2. Ejecute el script con sqlcmd.exe y cualquier parámetro requerido
  3. Cree una tarea programada de Windows y agregue el comando con todos los parámetros requeridos

P.ej

sqlcmd -d YOUR_DB -E -i YOUR_SCRIPT.SQL -o OUTPUTFILE.TXT 

Buena suerte.

John aka hot2use
fuente
44
Asegúrese de que estos scripts se coloquen en un servidor de aplicaciones / herramientas apropiado en algún lugar junto con la Tarea Programada y no en la computadora de desarrollo.
GER
7

No necesita Management Studio para ejecutar consultas.

Si realmente no tiene ninguna opción para que alguien programe un trabajo para usted, debe consultar sqlcmd como se indica en la respuesta de hot2use

Si está en una versión que no es compatible (ya que no especificó una versión) también hay osql, que es un cliente de línea de comando, pero esa herramienta ha quedado en desuso.

Luego, puede programar un comando con el programador que desee (por ejemplo, el Programador de tareas de Windows) y ejecutar algo como esto:

OSQL -E -i c:\temp\dowork.sql

Eche un vistazo a la documentación para ver qué opciones tiene para la selección y autenticación del servidor.

Tom V - prueba topanswers.xyz
fuente
-1

El uso del "Agente SQL Server" que se encuentra dentro del estudio MS SQL (en el explorador de objetos, expanda su servidor y normalmente debería estar al final de la lista) es probablemente su mejor opción.

Esto creará un trabajo que se puede configurar para ejecutarse a intervalos definidos. Los trabajos se ejecutarán como un servicio en el servidor en lugar del cliente. Esto significa que si su cliente se desconecta, seguirá ejecutándose y si el servidor se reinicia (por un motivo desconocido), el trabajo continuará ejecutándose sin que necesite reiniciarlo nuevamente.

La desventaja es que probablemente necesitará derechos de acceso elevados para poder hacer esto.

tc
fuente
3
Probablemente haya pasado por alto este punto en la pregunta: debido a las políticas de la organización, no puedo crear trabajos del Agente SQL Server [...]
Andriy M
@Andriy: Sigue siendo la respuesta correcta. No deberíamos estar ayudando a las personas a contrarrestar las TI contra las necesidades de su organización.
Dylan Knoll
1
@DylanKnoll: Bueno, creo que tendría mucho sentido que el respondedor reconozca que el OP menciona la política e incluya argumentos en contra de su estupidez (algo similar a su comentario, por ejemplo), pero "¿no debería estar ayudando"? La opción sugerida y aceptada no parece demasiado atroz, por lo que apegarse a los principios parecería un poco duro en este caso.
Andriy M
También entiendo su punto, pero ¿qué pasa con la perspectiva de los DBA? Parece que alguien está tratando de ocultar los errores en el diseño de la base de datos para que no salgan a la luz.
Dylan Knoll
1
Leyó "Trabajos del servidor SQL" antes de cambiarlo a "Trabajos del Agente SQL Server". No creo que pueda haber otro significado para el primero que el segundo. (No fue el OP quien lo editó, por cierto; fue una persona que entendió el término ligeramente erróneo exactamente como yo lo haría, y lo corrigió). Sin embargo, la redacción original es aún más fácil de pasar por alto, así que, de una forma u otra, todavía mantengo que fue un descuido de tu lado :)
Andriy M