diff --git a/src/Microsoft.SqlTools.ServiceLayer/Agent/AgentService.cs b/src/Microsoft.SqlTools.ServiceLayer/Agent/AgentService.cs index 382f6aa7..393de157 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/Agent/AgentService.cs +++ b/src/Microsoft.SqlTools.ServiceLayer/Agent/AgentService.cs @@ -185,7 +185,8 @@ namespace Microsoft.SqlTools.ServiceLayer.Agent if (connInfo != null) { CDataContainer dataContainer = CDataContainer.CreateDataContainer(connInfo, databaseExists: true); - var jobs = dataContainer.Server.JobServer.Jobs; + var jobServer = dataContainer.Server.JobServer; + var jobs = jobServer.Jobs; Tuple tuple = CreateSqlConnection(connInfo, parameters.JobId); SqlConnectionInfo sqlConnInfo = tuple.Item1; DataTable dt = tuple.Item2; @@ -211,7 +212,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Agent result.Schedules = jobSchedules.ToArray(); // Alerts - AlertCollection alerts = dataContainer.Server.JobServer.Alerts; + AlertCollection alerts = jobServer.Alerts; var jobAlerts = new List(); foreach (Alert alert in alerts) { @@ -241,7 +242,6 @@ namespace Microsoft.SqlTools.ServiceLayer.Agent result.Success = true; tlog.CloseReader(); } - connection.Disconnect(); await requestContext.SendResult(result); } } @@ -428,6 +428,17 @@ namespace Microsoft.SqlTools.ServiceLayer.Agent }; } + var logins = dataContainer.Server.Logins; + result.Logins = new AgentJobLogin[logins.Count]; + for (int i = 0; i < logins.Count; i++) + { + result.Logins[i] = new AgentJobLogin + { + Id = logins[i].ID, + Name = logins[i].Name + }; + } + result.Success = true; } catch (Exception ex) diff --git a/src/Microsoft.SqlTools.ServiceLayer/Agent/Common/AgentUtilities.cs b/src/Microsoft.SqlTools.ServiceLayer/Agent/Common/AgentUtilities.cs index 6cdaba93..062bb529 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/Agent/Common/AgentUtilities.cs +++ b/src/Microsoft.SqlTools.ServiceLayer/Agent/Common/AgentUtilities.cs @@ -61,7 +61,8 @@ namespace Microsoft.SqlTools.ServiceLayer.Agent EmailLevel = job.EmailLevel, PageLevel = job.PageLevel, EventLogLevel = job.EventLogLevel, - DeleteLevel = job.DeleteLevel + DeleteLevel = job.DeleteLevel, + Owner = job.Owner }; } diff --git a/src/Microsoft.SqlTools.ServiceLayer/Agent/Contracts/AgentJobRequest.cs b/src/Microsoft.SqlTools.ServiceLayer/Agent/Contracts/AgentJobRequest.cs index 3caed1f1..afa7dddf 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/Agent/Contracts/AgentJobRequest.cs +++ b/src/Microsoft.SqlTools.ServiceLayer/Agent/Contracts/AgentJobRequest.cs @@ -205,6 +205,15 @@ namespace Microsoft.SqlTools.ServiceLayer.Agent.Contracts public string Name { get; set; } } + /// + /// SQL Agent Login + /// + public class AgentJobLogin + { + public int Id { get; set; } + public string Name { get; set; } + } + /// /// SQL Agent Job Defaults result /// @@ -213,6 +222,8 @@ namespace Microsoft.SqlTools.ServiceLayer.Agent.Contracts public string Owner { get; set; } public AgentJobCategory[] Categories { get; set; } + + public AgentJobLogin[] Logins { get; set; } } /// diff --git a/src/Microsoft.SqlTools.ServiceLayer/Agent/Jobs/JobProperties.cs b/src/Microsoft.SqlTools.ServiceLayer/Agent/Jobs/JobProperties.cs index 45863c03..e0fb1646 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/Agent/Jobs/JobProperties.cs +++ b/src/Microsoft.SqlTools.ServiceLayer/Agent/Jobs/JobProperties.cs @@ -218,5 +218,10 @@ namespace Microsoft.SqlTools.ServiceLayer.Agent { get { return (JobCompletionActionCondition)this.eventLogLevel; } } + + public string Owner + { + get { return this.owner; } + } } } \ No newline at end of file