Beispiel #1
0
        public ActionResult SQLCPUSpark(string node)
        {
            var instance = SQLInstance.Get(node);

            if (instance == null)
            {
                return(ContentNotFound("SQLNode not found with name = '" + node + "'"));
            }

            var chart      = GetSparkChart(20, 100);
            var dataPoints = instance.CPUHistoryLastHour;

            var area = GetSparkChartArea(noLine: true);

            area.AxisY.Maximum = 100;
            area.AxisX.Minimum = DateTime.UtcNow.AddHours(-1).ToOADate();
            area.AxisX.Maximum = DateTime.UtcNow.ToOADate();
            var series = GetSparkSeries("PercentCPU");

            chart.Series.Add(series);

            if (dataPoints.HasData())
            {
                foreach (var cpu in dataPoints.Data)
                {
                    series.Points.Add(new DataPoint(cpu.EventTime.ToOADate(), cpu.ProcessUtilization));
                }
            }
            chart.ChartAreas.Add(area);

            return(chart.ToResult());
        }
        public ActionResult SQLCPUSpark(string node)
        {
            var instance = SQLInstance.Get(node);

            if (instance == null)
            {
                return(ContentNotFound($"SQLNode not found with name = '{node}'"));
            }

            var chart      = GetSparkChart(height: 20, width: 100, max: 100);
            var dataPoints = instance.CPUHistoryLastHour;

            var area = chart.ChartAreas.First();

            area.AxisX.Minimum   = DateTime.UtcNow.AddHours(-1).ToOADate();
            area.AxisX.Maximum   = DateTime.UtcNow.ToOADate();
            area.AxisX.LineColor = Color.Transparent;

            if (dataPoints.HasData())
            {
                var series = chart.Series.First();
                foreach (var cpu in dataPoints.Data)
                {
                    series.Points.Add(new DataPoint(cpu.EventTime.ToOADate(), cpu.ProcessUtilization));
                }
            }

            return(chart.ToResult());
        }
Beispiel #3
0
        public ActionResult Active(string node, SQLInstance.ActiveSearchOptions options,
                                   SQLInstance.ActiveSearchOptions.ShowSleepingSessionOptions?sleeping = null,
                                   bool?system  = false,
                                   bool?details = false)
        {
            if (sleeping.HasValue)
            {
                options.IncludeSleepingSessions = sleeping.Value;
            }
            if (system.HasValue)
            {
                options.IncludeSystemSessions = system.Value;
            }
            if (details.HasValue)
            {
                options.GetAdditionalInfo = details.Value;
            }

            var i = SQLInstance.Get(node);

            var vd = new DashboardModel
            {
                View                = SQLViews.Active,
                CurrentInstance     = i,
                ActiveSearchOptions = options
            };

            return(View("Operations.Active", vd));
        }
Beispiel #4
0
        public ActionResult InstanceSummary(string node, string type)
        {
            var i = SQLInstance.Get(node);

            if (i == null)
            {
                return(ContentNotFound("Could not find instance " + node));
            }

            switch (type)
            {
            case "connections":
                return(View("Instance.Connections", i));

            case "errors":
                return(View("Instance.Errors", i));

            case "memory":
                return(View("Instance.Memory", i));

            case "jobs":
                return(View("Instance.Jobs", i));

            default:
                return(ContentNotFound("Unknown summary view requested"));
            }
        }
Beispiel #5
0
        public ActionResult InstanceSummary(string node, string type)
        {
            var i = SQLInstance.Get(node);

            if (i == null)
            {
                return(NoInstanceRedirect(node));
            }

            switch (type)
            {
            case "configuration":
                return(View("Instance.Configuration", i));

            case "connections":
                return(View("Instance.Connections", i));

            case "errors":
                return(View("Instance.Errors", i));

            case "memory":
                return(View("Instance.Memory", i));

            case "jobs":
                return(View("Instance.Jobs", i));

            case "db-files":
                return(View("Instance.DBFiles", i));

            default:
                return(ContentNotFound("Unknown summary view requested"));
            }
        }
Beispiel #6
0
        public async Task <ActionResult> KillQueryAsync(string node, int sid)
        {
            var i = SQLInstance.Get(node);
            await i.KillAsync(sid);

            Response.Redirect("?node=" + node);
            return(null);
        }
Beispiel #7
0
        public ActionResult Databases(string node)
        {
            var vd = new DashboardModel
            {
                View            = DashboardModel.Views.Databases,
                CurrentInstance = SQLInstance.Get(node)
            };

            return(View("Dashboard", vd));
        }
Beispiel #8
0
        public ActionResult DatabaseTables(string node, string database)
        {
            var vd = new DatabasesModel
            {
                Instance = SQLInstance.Get(node),
                Database = database
            };

            return(View("Databases.Modal.Tables", vd));
        }
Beispiel #9
0
        private OperationsActiveModel GetOperationsActiveModel(string node, SQLInstance.ActiveSearchOptions options)
        {
            var i = SQLInstance.Get(node);

            return(new OperationsActiveModel
            {
                View = SQLViews.Active,
                CurrentInstance = i,
                ActiveSearchOptions = options
            });
        }
Beispiel #10
0
        public ActionResult Connections(string node)
        {
            var i = SQLInstance.Get(node);

            var vd = new DashboardModel
            {
                View            = SQLViews.Connections,
                CurrentInstance = i
            };

            return(View(vd));
        }
Beispiel #11
0
        public ActionResult Kill(string node, string database, int sid)
        {
            var activeSearchOptions = new SQLInstance.ActiveSearchOptions();

            var i         = SQLInstance.Get(node);
            var activeOps = i.GetActiveOperations(activeSearchOptions);
            var model     = activeOps.Data.FirstOrDefault(x => x.SessionId == sid);

            ViewData["node"] = node;
            ViewData["sid"]  = sid;

            return(View("Operations.Active.Kill", model));
        }
Beispiel #12
0
        public ActionResult SQLRemovePlan(string node, string handle)
        {
            var planHandle = HttpServerUtility.UrlTokenDecode(handle);
            var instance   = SQLInstance.Get(node);

            if (instance == null)
            {
                return(JsonError("Could not find server " + node));
            }
            var result = instance.RemovePlan(planHandle);

            return(result != 0 ? Json(true) : JsonError("There was an error removing the plan from cache"));
        }
Beispiel #13
0
        public ActionResult Databases(string node)
        {
            var i = SQLInstance.Get(node);

            var vd = new DashboardModel
            {
                View            = SQLViews.Databases,
                CurrentInstance = i,
                Refresh         = 2 * 60
            };

            return(View(vd));
        }
Beispiel #14
0
        public ActionResult Instance(string node)
        {
            var i = SQLInstance.Get(node);

            var vd = new InstanceModel
            {
                View            = SQLViews.Instance,
                Refresh         = node.HasValue() ? 10 : 5,
                CurrentInstance = i
            };

            return(View("Instance", vd));
        }
Beispiel #15
0
        private OperationsTopModel GetOperationsModel(string node, SQLInstance.TopSearchOptions options)
        {
            var i = SQLInstance.Get(node);

            options.SetDefaults();

            return(new OperationsTopModel
            {
                View = SQLViews.Top,
                CurrentInstance = i,
                TopSearchOptions = options
            });
        }
Beispiel #16
0
        public async Task <ActionResult> Connections(string node)
        {
            var i = SQLInstance.Get(node);

            var vd = new DashboardModel
            {
                View            = SQLViews.Connections,
                CurrentInstance = i,
                Cache           = i?.Connections,
                Connections     = i == null ? null : await i.Connections.GetData().ConfigureAwait(false)
            };

            return(View(vd));
        }
Beispiel #17
0
        public ActionResult TopDetail(string node, string handle, int?offset = null)
        {
            var planHandle = HttpServerUtility.UrlTokenDecode(handle);

            var i = SQLInstance.Get(node);

            var vd = new OperationsTopDetailModel
            {
                Instance = i,
                Op       = i.GetTopOperation(planHandle, offset).Data
            };

            return(View("Operations.Top.Detail", vd));
        }
Beispiel #18
0
        public ActionResult Instance(string node)
        {
            var i = SQLInstance.Get(node);

            var vd = new DashboardModel
            {
                View = SQLViews.Instance,
                StandaloneInstances = SQLInstance.AllStandalone,
                Refresh             = node.HasValue() ? 10 : 5,
                CurrentInstance     = i
            };

            return(View("Instance", vd));
        }
Beispiel #19
0
        public ActionResult Top(string node, SQLInstance.TopSearchOptions options, bool?detailed = false)
        {
            options.SetDefaults();

            var vd = new DashboardModel
            {
                View             = DashboardModel.Views.Top,
                Detailed         = detailed.GetValueOrDefault(),
                CurrentInstance  = SQLInstance.Get(node),
                TopSearchOptions = options
            };

            return(View("Dashboard", vd));
        }
Beispiel #20
0
        public ActionResult TopPlan(string node, string handle)
        {
            var planHandle = HttpServerUtility.UrlTokenDecode(handle);
            var i          = SQLInstance.Get(node);
            var op         = i.GetTopOperation(planHandle).Data;

            if (op == null)
            {
                return(ContentNotFound("Plan was not found."));
            }

            var ms = new MemoryStream(Encoding.UTF8.GetBytes(op.QueryPlan));

            return(File(ms, "text/xml", $"QueryPlan-{Math.Abs(handle.GetHashCode())}.sqlplan"));
        }
Beispiel #21
0
        public ActionResult DatabaseDetail(string node, string database, string view, string objectName)
        {
            var i = SQLInstance.Get(node);

            var vd = new DatabasesModel
            {
                Instance   = i,
                Database   = database,
                ObjectName = objectName
            };

            switch (view)
            {
            case "backups":
                vd.View = DatabasesModel.Views.Backups;
                return(View("Databases.Modal.Backups", vd));

            case "restores":
                vd.View = DatabasesModel.Views.Restores;
                return(View("Databases.Modal.Restores", vd));

            case "storage":
                vd.View = DatabasesModel.Views.Storage;
                return(View("Databases.Modal.Storage", vd));

            case "tables":
                vd.View = DatabasesModel.Views.Tables;
                return(View("Databases.Modal.Tables", vd));

            case "views":
                vd.View = DatabasesModel.Views.Views;
                return(View("Databases.Modal.Views", vd));

            case "unusedindexes":
                vd.View = DatabasesModel.Views.UnusedIndexes;
                return(View("Databases.Modal.UnusedIndexes", vd));

            case "missingindexes":
                vd.View = DatabasesModel.Views.MissingIndexes;
                return(View("Databases.Modal.MissingIndexes", vd));

            case "storedprocedures":
                vd.View = DatabasesModel.Views.StoredProcedures;
                return(View("Databases.Modal.StoredProcedures", vd));
            }
            return(View("Databases.Modal.Tables", vd));
        }
Beispiel #22
0
        public ActionResult TopPlan(string node, string handle)
        {
            var planHandle = HttpServerUtility.UrlTokenDecode(handle);
            var i          = SQLInstance.Get(node);
            var op         = i.GetTopOperation(planHandle).Data;

            if (op == null)
            {
                return(ContentNotFound("Plan was not found."));
            }

            var ms = new MemoryStream(Encoding.UTF8.GetBytes(op.QueryPlan));

            var dt = DateTime.Now.ToString("yyyyMMddHHmm");

            return(File(ms, "text/xml", $"QueryPlan-{dt}-{op.CompiledOnDatabase}-{op.StoredProcedure}.sqlplan"));
        }
Beispiel #23
0
        public ActionResult Connections(string node, bool refresh = false)
        {
            var instance = SQLInstance.Get(node);

            if (refresh && instance != null)
            {
                instance.Connections.Purge();
            }

            var vd = new DashboardModel
            {
                View            = DashboardModel.Views.Connections,
                CurrentInstance = instance
            };

            return(View("Dashboard", vd));
        }
Beispiel #24
0
        public ActionResult TopDetail(string node, string handle, int?offset = null)
        {
            var planHandle = HttpServerUtility.UrlTokenDecode(handle);
            var instance   = SQLInstance.Get(node);

            if (instance == null)
            {
                return(ContentNotFound("Server " + node + " not found."));
            }

            var vd = new OpsTopDetailModel
            {
                Instance = instance,
                Op       = instance.GetTopOperation(planHandle, offset).Data
            };

            return(View("Operations.Top.Detail", vd));
        }
        public ActionResult SQLCPUSpark(string node)
        {
            var instance = SQLInstance.Get(node);

            if (instance == null)
            {
                return(ContentNotFound($"SQLNode not found with name = '{node}'"));
            }
            var start  = DateTime.UtcNow.AddHours(-1);
            var points = instance.ResourceHistory.Data?.Where(p => p.EventTime >= start).ToList();

            if (points == null || points.Count == 0)
            {
                return(EmptySparkSVG());
            }

            return(SparkSVG(points, 100, p => p.ProcessUtilization, start));
        }
Beispiel #26
0
        public ActionResult Instance(string node, bool ajax = false)
        {
            var instance = SQLInstance.Get(node);

            if (instance == null && ajax)
            {
                return(ContentNotFound("Instance " + node + " was not found."));
            }

            var vd = new DashboardModel
            {
                StandaloneInstances = SQLInstance.AllStandalone,
                Refresh             = node.HasValue() ? 10 : 5,
                View            = DashboardModel.Views.Instance,
                CurrentInstance = instance
            };

            return(View(ajax ? "Instance" : "Dashboard", vd));
        }
Beispiel #27
0
        public ActionResult DatabaseDetail(string node, string database, string view)
        {
            var vd = new DatabasesModel
            {
                Instance = SQLInstance.Get(node),
                Database = database
            };

            switch (view)
            {
            case "tables":
                vd.View = DatabasesModel.Views.Tables;
                return(View("Databases.Modal.Tables", vd));

            case "views":
                vd.View = DatabasesModel.Views.Views;
                return(View("Databases.Modal.Views", vd));
            }
            return(View("Databases.Modal.Tables", vd));
        }
Beispiel #28
0
        public ActionResult Top(string node, SQLInstance.TopSearchOptions options, bool?detailed = false)
        {
            var i = SQLInstance.Get(node);

            options.SetDefaults();


            var vd = new OperationsTopModel
            {
                View             = SQLViews.Top,
                Detailed         = detailed.GetValueOrDefault(),
                CurrentInstance  = i,
                TopSearchOptions = options
            };

            if (i != null)
            {
                var cache = i.GetTopOperations(options);
                vd.TopOperations = cache.SafeData(true);
                vd.ErrorMessage  = cache.ErrorMessage;
            }

            return(View("Operations.Top", vd));
        }
Beispiel #29
0
        public ActionResult StopAgentJob(string node, Guid guid)
        {
            var instance = SQLInstance.Get(node);

            return(Json(instance.StopJob(guid)));
        }
Beispiel #30
0
        public ActionResult ToggleAgentJob(string node, Guid guid, bool enable)
        {
            var instance = SQLInstance.Get(node);

            return(Json(instance.ToggleJob(guid, enable)));
        }