Junierch/db list migration (#20751)

* remove Last Backup colum on assessment db list.

* column cleanup

* using sqlutils

* typo fixed

* Typo fixed

* use providerid from connection
This commit is contained in:
junierch
2022-10-27 15:37:20 -04:00
committed by GitHub
parent cc8afa97d0
commit facdb2b0ae
5 changed files with 54 additions and 32 deletions

View File

@@ -8,6 +8,7 @@ import { azureResource } from 'azurecore';
import { AzureSqlDatabase, AzureSqlDatabaseServer } from './azure';
import { generateGuid } from './utils';
import * as utils from '../api/utils';
import { TelemetryAction, TelemetryViews, logError } from '../telemtery';
const query_database_tables_sql = `
SELECT
@@ -43,7 +44,21 @@ const query_target_databases_sql = `
AND is_distributor <> 1
ORDER BY db.name;`;
export const excludeDatabses: string[] = [
const query_databases_with_size = `
WITH
db_size
AS
(
SELECT database_id, CAST(SUM(size) * 8.0 / 1024 AS INTEGER) size
FROM sys.master_files with (nolock)
GROUP BY database_id
)
SELECT name, state_desc AS state, db_size.size
FROM sys.databases with (nolock) LEFT JOIN db_size ON sys.databases.database_id = db_size.database_id
WHERE sys.databases.state = 0
`;
export const excludeDatabases: string[] = [
'master',
'tempdb',
'msdb',
@@ -263,7 +278,7 @@ export async function collectAzureTargetDatabases(
targetServerName));
}
return databaseList.filter(
database => !excludeDatabses.includes(database.name)) ?? [];
database => !excludeDatabases.includes(database.name)) ?? [];
}
export function getSqlString(value: azdata.DbCellValue): string {
@@ -277,3 +292,30 @@ export function getSqlNumber(value: azdata.DbCellValue): number {
export function getSqlBoolean(value: azdata.DbCellValue): boolean {
return value.isNull ? false : value.displayValue === '1';
}
export async function getDatabasesList(connectionProfile: azdata.connection.ConnectionProfile): Promise<azdata.DatabaseInfo[]> {
const ownerUri = await azdata.connection.getUriForConnection(connectionProfile.connectionId);
const queryProvider = azdata.dataprotocol.getProvider<azdata.QueryProvider>(
connectionProfile.providerId,
azdata.DataProviderType.QueryProvider);
try {
const queryResult = await queryProvider.runQueryAndReturn(ownerUri, query_databases_with_size);
const result = queryResult.rows.map(row => {
return {
options: {
name: getSqlString(row[0]),
state: getSqlString(row[1]),
sizeInMB: getSqlString(row[2]),
}
};
}) ?? [];
return result;
} catch (error) {
logError(TelemetryViews.Utils, TelemetryAction.GetDatabasesListFailed, error);
return [];
}
}