Sql server 从asp.net mvc 4 web应用程序运行SQL作业
我需要一些帮助来了解如何从asp.net mvc web应用程序启动SQL Server代理作业。该作业需要在单击按钮时启动。正确的做法是什么 我刚刚安装了hangfire,我正在尝试配置它,但是我被下面的代码卡住了。我走对了吗 任何线索都会非常有用。谢谢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
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代理工作