如何从SQL Server代理运行作业?

4

是否可以通过单击 按钮ASP.Net 页面中触发从 SQL Server Agent 执行 作业


你不能只是通过按钮单击来执行存储过程,从而执行你所拥有的作业吗? - Mad Dog Tannen
3个回答

3
您可以使用 sp_start_job (Transact-SQL) 命令立即执行作业。
[ @job_name= ] 'job_name' 为作业名称,必须指定 job_id 或者 job_name,但是两者不能同时指定。job_name 是 sysname 类型,默认值为 NULL。
您可以将其用作存储过程并在您的代码中运行它。
如果您的作业运行 DTS 包,则可以使用Package.Execute method 命令。
返回包含有关包执行成功或失败的信息的 DTSExecResult 枚举。
以下是 MSDN 页面上的示例:
    static void Main(string[] args)
    {
        Package p = new Package();
        p.InteractiveMode = true;
        p.OfflineMode = true;

        // Add a Script Task to the package.
        TaskHost taskH = (TaskHost)p.Executables.Add(typeof(Microsoft.SqlServer.Dts.Tasks.ScriptTask.ScriptTask).AssemblyQualifiedName);
        // Run the package.
        p.Execute();
        // Review the results of the run.
        if (taskH.ExecutionResult == DTSExecResult.Failure || taskH.ExecutionStatus == DTSExecStatus.Abend)
            Console.WriteLine("Task failed or abended");
        else
            Console.WriteLine("Task ran successfully");
    }

嗨,使用sp_start_job可以解决问题,但是否还有一种方法可以检查作业是否成功执行,就像您为DTS包编写的代码一样? - Stuart
@FairHaven 是的。sp_start_job 返回0(成功)或1(失败)。请查看文档。如果您发现这些答案有用,请不要忘记点赞并接受其中之一。 - Soner Gönül

1
使用存储过程sp_start_job
EXEC dbo.sp_start_job N'YourJobName';

嗨,除了JobName之外,N字母的目的是什么? - Stuart
1
这是关于NVARCHAR数据类型的,它表示UNICODE字符串。 - bjnr

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接