При поиске по теме в Интернете я нашел два подхода: оба работают нормально, но мне нужно знать разницу между ними, какая из них подходит для какого случая и т. Д. Наши рабочие места занимают некоторое время, и мне нужно подождать, пока Иов закончит работу до следующей строки C#.Работающего агента сервера Sql от C#
подход Один
var dbConn = new SqlConnection(myConString);
var execJob = new SqlCommand
{
CommandType = CommandType.StoredProcedure,
CommandText = "msdb.dbo.sp_start_job"
};
execJob.Parameters.AddWithValue("@job_name", p0);
execJob.Connection = dbConn;
using (dbConn)
{
dbConn.Open();
using (execJob)
{
execJob.ExecuteNonQuery();
Thread.Sleep(5000);
}
}
подход Два
using System.Threading;
using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.Smo.Agent;
var server = new Server(@"localhost\myinstance");
var isStopped = false;
try
{
server.ConnectionContext.LoginSecure = true;
server.ConnectionContext.Connect();
var job = server.JobServer.Jobs[jobName];
job.Start();
Thread.Sleep(1000);
job.Refresh();
while (job.CurrentRunStatus == JobExecutionStatus.Executing)
{
Thread.Sleep(1000);
job.Refresh();
}
isStopped = true;
}
finally
{
if (server.ConnectionContext.IsOpen)
{
server.ConnectionContext.Disconnect();
}
}
поэтому читаем код @ Расика, что вы не понимаете .. знаете ли вы, что делает код ..? это довольно прямолинейно .. – MethodMan
Конечно, первый использует «sp_start_job», а второй - нет. Может быть, есть плюсы и минусы. Его два разных подхода, чтобы сделать то же самое, используя разные библиотеки. Я хочу знать, какой из них подходит для какого случая и т. Д. Может быть, второй подход является последним, поэтому его спросили. – Rasika
, то посмотрите на 'MSDN sp_start_job' также выглядит так, как sql-агент запускает второй процесс по сравнению с первым, где вы на самом деле явно вызываете хранимую процедуру Sql с помощью кода C#, только я вижу, что если один или другой отключен .. то это единственный способ, на мой взгляд, вы сможете сказать, что лучше и сделать профилирование, чтобы увидеть, какой из них выполняется быстрее и с меньшими ресурсами. – MethodMan