Beispiel #1
0
        public async Task <InstanceInfo> UpdateAsync(Instance instance, IInstanceDataCollector collector)
        {
            // Get information about databases and their principals (inluding permissions).
            // Stars first because it has more data and more time to process it.
            DataTable databases = await collector.GetDatabasesAsync();                     // List of all databases on the instance with some basic information (size, date of creation).

            DataTable databaseRoles = await collector.GetDatabaseRolesAsync();             // List of all roles on all databases.

            DataTable databaseUsers = await collector.GetDatabaseUsersAsync();             // List of all users on all databases.

            DataTable databasePermissions = await collector.GetDatabasePermissionsAsync(); // List of all permissions on all databases.

            // Get information about instance and it's principals.
            var instanceDetailsTask     = collector.GetInstanceInfoAsync();
            var instanceRolesTask       = collector.GetInstanceRolesAsync();
            var instanceLoginsTask      = collector.GetInstanceLoginsAsync();
            var instancePermissionsTask = collector.GetInstancePermissionsAsync();
            // Start parsing databases and their principals.
            var parsedDatabases = ParseDatabasesAndTheirPrincipals(databases, databaseRoles, databaseUsers, databasePermissions);
            // Start parsing of instance principals
            InstanceInfo result = ParseInstancePrincipals(
                instance.Id,
                (await instanceDetailsTask).Rows[0],
                await instanceRolesTask,
                await instanceLoginsTask,
                await instancePermissionsTask);

            result.Databases.AddRange(parsedDatabases);
            return(result);
        }
Beispiel #2
0
 public async Task <InstanceInfo> UpdateStatusOnlyAsync(int instanceID, IInstanceDataCollector collector)
 {
     return(ParseInstanceInfo(
                new InstanceInfo(instanceID),
                (await collector.GetInstanceInfoAsync()).Rows[0]));
 }