public static ICollection <ChartInfo> ListAllChartsForSqlDatabaseServer(string servername, string username, string password) { var client = SQLDatabaseUsageClient.CreateServerUsagesClient(servername, username, password); Func <string, string, string, ChartInfo> initChartInfo = (databaseName, uriPath, counterName) => new ChartInfo { ResourceName = databaseName, ResourceType = "database", ServiceName = servername, ServiceType = "Azure SQL Database", Name = string.Format("{0} {1} (SQL Database)", databaseName, counterName), Uri = string.Format("wadgraphes://sql-database/{0}/{1}/{2}", client.ServerName, databaseName, uriPath) }; var res = new List <ChartInfo>(); foreach (var database in client.ListDatabases()) { res.Add(initChartInfo(database, "logio", "Log I/O")); res.Add(initChartInfo(database, "dataio", "Data I/O")); res.Add(initChartInfo(database, "cpu", "CPU")); res.Add(initChartInfo(database, "storage", "Storage")); res.Add(initChartInfo(database, "memory", "Memory")); res.Add(initChartInfo(database, "sessions", "Sessions")); } return(res); }
private Task <ChartData> GetSQLDatabaseChartData(TimeSpan interval) { var client = SQLDatabaseUsageClient.CreateServerUsagesClient(_path[0], SqlCredentialsProvider(_path[0]).Username, SqlCredentialsProvider(_path[0]).Password); var usages = client.GetUsages(DateTime.UtcNow.Add(interval.Negate())); var serverName = _path[0]; var counter = _path[_path.Length - 1]; var database = _path[_path.Length - 2]; switch (counter) { case "logio": return(FilterSQLUsages(usages, serverName, database, "Log I/O", "avg_log_write_percent")); case "dataio": return(FilterSQLUsages(usages, serverName, database, "Data I/O", "avg_physical_data_read_percent", "avg_data_io_percent")); case "cpu": return(FilterSQLUsages(usages, serverName, database, "CPU", "avg_cpu_percent")); case "storage": return(FilterSQLUsages(usages, serverName, database, "Storage", "storage_in_megabytes")); case "memory": return(FilterSQLUsages(usages, serverName, database, "Memory", "active_memory_used_kb")); case "sessions": return(FilterSQLUsages(usages, serverName, database, "Sessions", "active_session_count")); default: throw new Exception("Unknown counter " + counter); } }
private Task <ChartData> GetRealTimeData(string serverName, string database, string counter) { var client = SQLDatabaseUsageClient.CreateDatabaseUsagesClient( serverName, database, SqlCredentialsProvider(_path[0]).Username, SqlCredentialsProvider(_path[0]).Password); var usages = client.GetUsages(); switch (counter) { case "logwrite": return(FilterSQLRealTimeUsages(usages, serverName, database, "Log write %", "avg_log_write_percent")); case "cpu": return(FilterSQLRealTimeUsages(usages, serverName, database, "CPU %", "avg_cpu_percent")); case "dataio": return(FilterSQLRealTimeUsages(usages, serverName, database, "Data IO %", "avg_data_io_percent")); case "memory": return(FilterSQLRealTimeUsages(usages, serverName, database, "Memory %", "avg_memory_usage_percent")); default: throw new Exception("Unknown counter " + counter); } }
internal static bool AlreadyHasServer(string servername) { var normalized = SQLDatabaseUsageClient.NormalizeServername(servername); return(DataContext.Do(ctx => { var db = ctx.SQLDatabases.FirstOrDefault(_ => _.Servername == normalized); return db != null; })); }
internal static void FinishSession(string sessionId) { DataContext.Do(ctx => { var session = ctx.AddSQLDatabaseSessions.Find(sessionId); ctx.SQLDatabases.Add(new SQLDatabase { Servername = SQLDatabaseUsageClient.NormalizeServername(session.Servername), Password = session.Password, Username = session.Username, Version = GetVersionFromSession(session) }); ctx.SaveChanges(); }); }
internal static SqlCredentials GetCredentials(string forServer) { return(DataContext.Do(ctx => { forServer = SQLDatabaseUsageClient.NormalizeServername(forServer); var record = ctx.SQLDatabases.FirstOrDefault(_ => _.Servername == forServer); if (record == null) { throw new InvalidOperationException(string.Format("Couldn't fetch credentials for database server {0}", forServer)); } return record.Credentials; })); }
private ICollection <UsageObject> GetDatabaseUsages(DataAccess.SQLDatabase database) { var result = new List <UsageObject>(); result.AddRange(SQLDatabaseUsageClient.CreateServerUsagesClient(database.Servername, database.Username, database.Password).GetUsages(DateTime.UtcNow.AddHours(-1))); var databaseNames = SQLDatabaseUsageClient.ListUserDatabases(database.Servername, database.Username, database.Password); foreach (var dbName in databaseNames) { result.AddRange(SQLDatabaseUsageClient.CreateDatabaseUsagesClient(database.Servername, dbName, database.Username, database.Password).GetUsages()); } return(result); }
private static string GetVersionFromSession(AddSQLDatabaseSession session) { return(SQLDatabaseUsageClient.CreateServerUsagesClient(session.Servername, session.Username, session.Password).GetVersionString()); }
internal static TestConnectionResult TestConnection(MVC.Commands.CreateAzureSQLDatabaseCommand cmd) { return(SQLDatabaseUsageClient.CreateServerUsagesClient(cmd.Servername, cmd.Username, cmd.Password).TestConnection()); }
private ICollection <UsageObject> GetDatabaseUsages(DataAccess.SQLDatabase database) { return(SQLDatabaseUsageClient.CreateServerUsagesClient(database.Servername, database.Username, database.Password).GetUsages(DateTime.UtcNow.AddHours(-1))); }