Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Eseguire job via batch

201 views
Skip to first unread message

Stefano

unread,
Nov 28, 2007, 5:42:24 AM11/28/07
to
Ho creato un job che schedulerò perchè venga lanciato giornalmente.
Mi piacerebbe poter offrire la possibilità di attivarlo anche manualmente.
A tale proposito pensavo di utilizzare un file batch (oppure vbs) che ponevo
sul desktop.
E' fattibile? In caso affermativo dove posso trovare documentazione?
Grazie.Ciao.Stefano.


Lorenzo Benaglia

unread,
Nov 28, 2007, 5:48:54 AM11/28/07
to
Stefano wrote:
> A tale proposito pensavo di utilizzare un file batch
> (oppure vbs) che ponevo sul desktop.
> E' fattibile?

Ciao Stefano,

Si, è fattibile con un piccolo file batch che via osql.exe (o sqlcmd.exe in
SQL Server 2005) richiami la stored procedure di sistema sp_start_job
specificando il nome del job da eseguire.

> In caso affermativo dove posso trovare documentazione?

Sui Books Online :-)
http://msdn2.microsoft.com/en-us/library/ms162806.aspx
http://msdn2.microsoft.com/en-us/library/ms162773.aspx
http://technet.microsoft.com/en-us/library/ms186757.aspx

> Grazie.Ciao.Stefano.
Prego.

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo
http://italy.mvps.org


Stefano

unread,
Nov 28, 2007, 6:05:33 AM11/28/07
to

"Lorenzo Benaglia" <lben...@despammed.com> ha scritto nel messaggio
news:5r4vg8F...@mid.individual.net...

AlessandroD

unread,
Nov 28, 2007, 6:07:17 AM11/28/07
to
"Stefano" ha scritto nel messaggio
news:jCb3j.9210$r62....@tornado.fastwebnet.it...
Se stai usando SQL 2005, puoi crearti una tua sp con specificata la clausola
EXECUTE AS SELF, in modo che faccia da wrapper tra la sp estesa sp_start_job
che ti permette di avviare un job di SQL Agent, e la necessità di invocare
manualmente l'avvio del job da parte di un utente normale.
La sp di wrapper ti serve per motivi di sicurezza, altrimenti il tuo utente
generico dovrebbe collegarsi a SQL con delle credenziali troppo alte per
riuscire ad invocare direttamente di suo la stored prodecure sp_start_job.
La sp che fa da wrapper la crei usando un account con privilegi "elevati",
vedi:

[sp_start_job (Transact-SQL)]
http://msdn2.microsoft.com/en-us/library/ms186757.aspx

nella sezione dedicata ai permessi in modo da decidere che utente usare
(anche sa per esempio, ma fa finta che non te l'abbia detto... :-) per
riuscire a richiamare sp_start_job.

Creando la sp con la clausola EXECUTE AS SELF, vedi:

[EXECUTE AS Clause (Transact-SQL)]
http://msdn2.microsoft.com/en-us/library/ms188354.aspx

per maggiori dettagli, fai in modo che un qualsiasi utente generico con
privilegi limitatissimi (anche il solo permesso di exec sulla tua stored
procedure) sia in grado di avviare il job richiesto proprio perché la sp di
wrapper non verrà eseguita nel contesto di sicurezza dell'utente chiamante
ma in quello dell'utente che l'ha generata/modificata (cioè l'utente che di
fatto ha impartito i comandi di CREATE PROCEDURE o ALTER PROCEDURE).
Fatto tutto questo, ti basta un banale script VBS che esegua la connessione
verso SQL con l'utente "pistola" e faccia l'exec della tua stored procedure
wrapper.

Se non stai usando SQL 2005, be', fai l'aggiornamento... :-)
Ciao, Alessandro

--

/*
Alessandro Dereani


Microsoft MVP - SQL Server

http://mvp.support.microsoft.com
*/


Stefano

unread,
Nov 28, 2007, 7:25:40 AM11/28/07
to

>
> Se non stai usando SQL 2005, be', fai l'aggiornamento... :-)
> Ciao, Alessandro
>
> --
>
> /*
> Alessandro Dereani
> Microsoft MVP - SQL Server
> http://mvp.support.microsoft.com
> */


Purtroppo non utilizzo SQLServer 2005, grazie comunque per l'interessante
segnalazione.
Ciao. Stefano.


0 new messages