Esegui codice C # all’interno di un processo di SQL Agent

Ho un pezzo di codice che deve essere eseguito ogni giorno in un momento specifico. Il codice adesso è seduto come parte della mia applicazione web. Esistono 2 stored procedure per ottenere / salvare i dati utilizzati dal codice.

Come posso configurare Microsoft SQL Server Management Studio 2008 R2 per eseguire il mio codice e i processi memorizzati in un processo SQL Agent. Non l’ho mai fatto prima e non riesco a trovare la documentazione.

Il metodo più semplice consiste nel creare un’applicazione console .NET che sia solo una shell per il codice reale che si trova in una DLL o un servizio web o ovunque. Quindi, nel lavoro di SQL Agent, creare un passaggio di tipo “Sistema operativo (CmdExec)” che chiama l’app della console. Salva la seccatura di SSIS (e questo è uno dei problemi principali da evitare). Sono d’accordo anche con @Hasanain che un proc .NET può essere un’alternativa ragionevole.

inserisci la descrizione dell'immagine qui

Un’altra cosa da notare. L’agente SQL CmdExec cercherà un codice di ritorno intero, quindi il tuo public static int Main(string args[]) {} metodo public static int Main(string args[]) {} restituisce 0 per il successo e un numero negativo per il fallimento. Oppure, se si lancia un’eccezione, funzionerà anche bene. E l’agente SQL registrerà il testo da qualsiasi cosa tu abbia gettato da quando l’app della console lo avrà scritto su stdout / stderr.

È necessario leggere su Sql Server Integration Services (SSIS) . È quindi ansible pianificare i pacchetti SSIS che sono unità di funzionalità sql. All’interno di un pacchetto SSIS è ansible eseguire lavori di script e richiamare le funzioni CLR (Common Language Runtime – ie .Net) per eseguire il codice .net.

Una cosa però, potresti pensare a questo in un modo leggermente arretrato. Il motivo principale per utilizzare SSIS è pianificare le esecuzioni di codice che chiamano alcuni sql? In tal caso, ti consigliamo di cercare / utilizzare Windows Workflow Foundation (WWF) . Questo è un framework .net per lo sviluppo e l’esecuzione di attività .net “a lungo termine”. Ad un livello semplice, puoi considerarlo come l’equivalente di SSIS per i programmi .Net. Può essere integrato direttamente nelle tue applicazioni .Net senza alcuna conoscenza SSIS del server SQL.

Infine, se la tua applicazione è “molto” semplice, potresti prendere in considerazione la semplice conclusione delle chiamate di aggiornamento del database in una semplice applicazione console. In questo modo puoi semplicemente chiamare l’applicazione tramite l’ Utilità di pianificazione integrata in Windows per l’esecuzione in determinati giorni / orari ecc.

È ansible creare una stored procedure .NET e aggiungerla a SQL Server. Quindi creare un processo SQL Agent che chiamerebbe la nuova stored procedure.

La procedura .Net memorizzata dovrebbe essenzialmente essere limitata a un piccolo insieme di librerie .NET già integrate in SQL Server. Puoi aggiungere le tue dll personalizzate per assicurarti che tutte le funzionalità richieste siano disponibili. Tuttavia, dato che c’è un avvertimento da parte della SM che non c’è alcuna garanzia che tutte le dll personalizzate funzioneranno, richiederebbe semplicemente test rigorosi, per garantire che.