Esegui automaticamente query in MS SQL Studio ogni ora


13

Supporto un'applicazione in una grande impresa, uno dei miei ruoli è la pulizia dei dati. C'è una query che devo eseguire ogni ora e vorrei automatizzarla. A causa delle politiche dell'organizzazione, non riesco a creare processi di SQL Server Agent o modificare lo schema, posso solo manipolare i dati.

Un infinito

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

fa il lavoro per me, ma alzo le spalle al pensiero di una connessione perma-open.

Idealmente, scriverei MS SS stesso per eseguire un determinato codice ogni ora, ma non sono sicuro che sia possibile.

C'è qualche soluzione a questo problema?


1
Puoi usare Windows Sceduler sul tuo PC?
sepupic,

12
Chiedi a qualcuno che ha il permesso di programmarlo per te.
Mago Magoo,

@sepupic Questa è la mia prossima terra di ricerca, se nulla in MS SS mi può aiutare.
Ivan Koshelev,

Sono d'accordo. Mi sentirei molto a disagio quando eseguo il looping del codice sul mio computer client. Che cosa succede se il tuo PC si è bloccato, qualcuno lo ha staccato, ecc. Ho lavorato in ambienti simili in cui i lavori SQL non erano disponibili per i team di app, perché avevamo un'opzione alternativa di utilizzare AutoSys o un altro strumento di pianificazione in esecuzione su un server delle applicazioni. Prova a scoprire come vengono gestite le altre attività pianificate? Un'altra soluzione potrebbe essere quella di utilizzare SQL Server Reporting Services ? Non ideale lo so ...
Terry C

9
La soluzione corretta è quella di andare ai DBA e farli creare un processo di SQL Server Agent per eseguire questa pulizia ogni ora. Poi scoprire perché che stai ricevendo i dati nel database che le esigenze di "pulizia", così spesso e ottenere che fissi.
alroc,

Risposte:


22

Il tuo amico è sqlcmd (Microsoft Technet)

  1. Creare un file SQL con lo script richiesto per eseguire il processo di pulizia
  2. Esegui lo script con sqlcmd.exe e tutti i parametri richiesti
  3. Creare un'attività pianificata di Windows e aggiungere il comando con tutti i parametri richiesti

Per esempio

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

In bocca al lupo.


4
Assicurati che questi script siano posizionati su un app / tool server appropriato da qualche parte insieme all'attività pianificata e non al computer di sviluppo.
GER,

7

Non è necessario Management Studio per eseguire le query.

Se davvero non hai la possibilità di fare in modo che qualcuno pianifichi un lavoro per te, dovresti esaminare sqlcmd come indicato nella risposta di hot2use

Se si utilizza una versione in cui non è supportata (poiché non è stata specificata una versione), esiste anche osql che è un client della riga di comando, ma tale strumento è obsoleto.

È quindi possibile pianificare un comando utilizzando qualsiasi programmatore desiderato (ad esempio Utilità di pianificazione di Windows) ed eseguire qualcosa del genere:

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

Dai un'occhiata alla documentazione per vedere quali opzioni hai per la selezione e l'autenticazione del server.


-1

L'uso di "SQL Server Agent" che si trova in MS SQL Studio (in Esplora oggetti, espandi il tuo server e dovrebbe essere normalmente in fondo all'elenco) è probabilmente la soluzione migliore.

Ciò creerà un lavoro che può essere impostato per l'esecuzione a intervalli definiti. I lavori verranno eseguiti come servizio sul server anziché sul client. Ciò significa che se il client si disconnette, verrà comunque eseguito e se il server viene riavviato (per un motivo sconosciuto), il lavoro continuerà a essere eseguito senza che sia necessario inizializzarlo nuovamente.

Il rovescio della medaglia è che probabilmente avrai bisogno di diritti di accesso elevati per poterlo fare.


3
Probabilmente hai ignorato questo aspetto della domanda: a causa dei criteri dell'organizzazione, non riesco a creare processi di SQL Server Agent [...]
Andriy M,

@Andriy: è ancora la risposta corretta. Non dovremmo aiutare le persone a contrastare l'IT ombra rispetto alle esigenze della propria organizzazione.
Dylan Knoll,

1
@DylanKnoll: Beh, penso che avrebbe perfettamente senso che il rispondente riconoscesse l'OP che menzionava la politica e includesse argomenti contro la sua stupidità (qualcosa sulla falsariga del tuo commento, ad esempio), ma "non dovrebbe essere d'aiuto"? L'opzione suggerita e accettata non sembra troppo atroce, quindi attenersi ai principi sembrerebbe un po 'duro in questo caso.
Andriy M,

Ottengo anche il tuo punto, ma per quanto riguarda la prospettiva dei DBA? Sembra che qualcuno stia cercando di nascondere errori nella progettazione di DB, quindi non vengono portati alla luce.
Dylan Knoll,

1
Ha letto "Lavori server SQL" prima di essere modificato in "Lavori agente SQL Server". Non penso che ci possa essere un altro significato nel primo rispetto al secondo. (A proposito, non è stato il PO a modificarlo; era una persona che ha capito il termine leggermente errato esattamente come avrei fatto io e lo ha corretto.) La formulazione originale, tuttavia, è ancora più facile da trascurare, quindi, in un modo o nell'altro, continuo a sostenere che è stata una svista da parte tua :)
Andriy M
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.