Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 从asp.net mvc 4 web应用程序运行SQL作业_Sql Server_Asp.net Mvc 4_Hangfire_Sql Job - Fatal编程技术网

Sql server 从asp.net mvc 4 web应用程序运行SQL作业

Sql server 从asp.net mvc 4 web应用程序运行SQL作业,sql-server,asp.net-mvc-4,hangfire,sql-job,Sql Server,Asp.net Mvc 4,Hangfire,Sql Job,我需要一些帮助来了解如何从asp.net mvc web应用程序启动SQL Server代理作业。该作业需要在单击按钮时启动。正确的做法是什么 我刚刚安装了hangfire,我正在尝试配置它,但是我被下面的代码卡住了。我走对了吗 任何线索都会非常有用。谢谢 public class MyController : Controller { public void ExecJob(int Id) { BackgroundJob.Enqueue(() => UpdateDB

我需要一些帮助来了解如何从asp.net mvc web应用程序启动SQL Server代理作业。该作业需要在单击按钮时启动。正确的做法是什么

我刚刚安装了hangfire,我正在尝试配置它,但是我被下面的代码卡住了。我走对了吗

任何线索都会非常有用。谢谢

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

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

您可以单击按钮从web应用程序执行存储过程

存储过程:

    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
在数据库中创建此存储过程并将作业名称作为参数传递,或者您可以在存储过程中对作业名称进行硬编码,以防止意外执行其他SQL作业。

您可以使用如下SqlCommand(asp.net):

var connection = new SqlConnection("<yourSqlConnectionString>");
var command = connection.CreateCommand();
command.CommandType = CommandType.StoredProcedure;
command.CommandText = "msdb.dbo.sp_start_job";
command.Parameters.AddWithValue("@job_name", "<yourJobName>");

connection.Open();
command.ExecuteNonQuery();
var connection=newsqlconnection(“”);
var command=connection.CreateCommand();
command.CommandType=CommandType.storedProcess;
command.CommandText=“msdb.dbo.sp_start_job”;
command.Parameters.AddWithValue(“@job_name”,”);
connection.Open();
command.ExecuteNonQuery();
(代码未经测试。)


触发mssql服务器作业可以通过使用StoredProcess“sp_start_job”来实现。

您所说的“sql作业”是什么意思。您是指运行存储过程还是运行实际的Sql Server代理作业?我认为您最好的选择是编写一个调用Sql Server作业的存储过程。请注意,必须测试运行该网站的帐户的“标识”,以查看它是否可以启动sql server作业。PS学习Quartz.Net之类的东西越快,你就越有可能试图通过sql server工作来捏造一切。@STLDeveloper:sql server代理工作