2017-10-10 4 views
0

Ich brauche Hilfe bei der Ermittlung, wie ein SQL Server-Agent-Job von einer asp.net mvc-Webanwendung gestartet wird. Der Job muss auf Knopfdruck gestartet werden. Was ist der richtige Weg?Führen Sie einen SQL-Job Von einer asp.net mvc 4 Webanwendung

Ich habe gerade Hangfire installiert und ich versuche, es zu konfigurieren, aber ich bin mit dem folgenden Code fest. Bin ich auf dem richtigen Weg?

Alle Leads wären sehr hilfreich. Vielen Dank.

public class MyController : Controller 
{  
public void ExecJob(int Id) 
    { 
    BackgroundJob.Enqueue(() => UpdateDB(Id)); 
    } 

public void UpdateDB(Id) 
    { 
    //how to start the sql job 
    } 
} 
+0

Was meinen Sie mit einem "SQL-Job". Bedeutet das, dass Sie eine gespeicherte Prozedur ausführen oder einen aktuellen Sql Server Agent-Job ausführen? – STLDeveloper

+0

Ich denke, Ihre beste Wette ist, eine gespeicherte Prozedur zu schreiben, die den Job sql-server aufrufen wird. Seien Sie gewarnt, die "Identität" des Accounts, der die Website ausführt, muss getestet werden, um zu sehen, ob es einen SQL-Server-Job starten kann. PS Je schneller Sie etwas wie Quartz.Net lernen, desto besser werden Sie versuchen, alles durch einen SQL-Server-Job zu manipulieren. – granadaCoder

+0

@STLDeveloper: Ein SQL Server Agent-Job – newbie

Antwort

0

Sie können eine gespeicherte Prozedur aus der Web-Anwendung auf einen Klick ausführen

Stored Procedure:

CREATE PROCEDURE RunJob 
     @JobName NVARCHAR(100) 
    AS 
    BEGIN 
     -- SET NOCOUNT ON added to prevent extra result sets from 
     -- interfering with SELECT statements. 
     SET NOCOUNT ON; 

     EXEC msdb.dbo.sp_start_job @JobName 
    END 
    GO 

Erstellen Sie diese gespeicherte Prozedur in Ihrer Datenbank und den Jobnamen als ein Pass Parameter oder Sie können den Jobnamen in der gespeicherten Prozedur fest codieren, um die versehentliche Ausführung anderer SQL-Jobs zu verhindern.

Verwandte Themen