remove Last Backup colum on assessment db list. (#20728)

* remove Last Backup colum on assessment db list.

* column cleanup
This commit is contained in:
junierch
2022-10-05 21:37:36 -04:00
committed by GitHub
parent f59ed49b2a
commit ee386e7382
5 changed files with 59 additions and 22 deletions

View File

@@ -0,0 +1,20 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
//Select all databases available on the server with size
export const SELECT_ALL_DB_W_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
`;

View File

@@ -933,7 +933,6 @@ export const ENTER_YOUR_SQL_CREDS = localize('sql.migration.enter.your.sql.cred'
export const SERVER = localize('sql.migration.server', "Server");
export const USERNAME = localize('sql.migration.username', "User name");
export const SIZE = localize('sql.migration.size', "Size (MB)");
export const LAST_BACKUP = localize('sql.migration.last.backup', "Last backup");
export const DATABASE_MIGRATE_TEXT = localize('sql.migrate.text', "Select the databases that you want to migrate to Azure SQL.");
export const OFFLINE_CAPS = localize('sql.migration.offline.caps', "OFFLINE");
export const SELECT_DATABASE_TO_CONTINUE = localize('sql.migration.select.database.to.continue', "Please select 1 or more databases to assess for migration");

View File

@@ -14,7 +14,8 @@ import { v4 as uuidv4 } from 'uuid';
import { sendSqlMigrationActionEvent, TelemetryAction, TelemetryViews, logError } from '../telemtery';
import { hashString, deepClone } from '../api/utils';
import { SKURecommendationPage } from '../wizard/skuRecommendationPage';
import { excludeDatabses, TargetDatabaseInfo } from '../api/sqlUtils';
import { excludeDatabses, getSqlString, TargetDatabaseInfo } from '../api/sqlUtils';
import * as queries from '../constants/queries';
const localize = nls.loadMessageBundle();
export enum State {
@@ -1189,6 +1190,37 @@ export class MigrationStateModel implements Model, vscode.Disposable {
return false;
}
}
//Get QueryProvider
private async runQueryWithResults(queryString: string): Promise<azdata.SimpleExecuteResult> {
const connectionProfile = await this.getSourceConnectionProfile();
const connectionUri = await azdata.connection.getUriForConnection(this._sourceConnectionId);
const queryProvider = azdata.dataprotocol.getProvider<azdata.QueryProvider>(connectionProfile.providerId, azdata.DataProviderType.QueryProvider);
return await queryProvider.runQueryAndReturn(connectionUri, queryString);
}
public async getDatabasesList(): Promise<azdata.DatabaseInfo[]> {
try {
const queryResult = await this.runQueryWithResults(queries.SELECT_ALL_DB_W_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.SkuRecommendationWizard, TelemetryAction.GetDatabasesListFailed, error);
return [];
}
}
}
export interface ServerAssessment {

View File

@@ -60,7 +60,8 @@ export enum TelemetryAction {
GetDBSkuRecommendation = 'GetDBSkuRecommendation',
GetInstanceRequirements = 'GetInstanceRequirements',
StartDataCollection = 'StartDataCollection',
StopDataCollection = 'StopDataCollection'
StopDataCollection = 'StopDataCollection',
GetDatabasesListFailed = 'GetDatabasesListFailed'
}
export function logError(telemetryView: TelemetryViews, err: string, error: any): void {

View File

@@ -119,8 +119,7 @@ export class DatabaseSelectorPage extends MigrationWizardPage {
const searchText = value?.toLowerCase();
return row[2]?.toLowerCase()?.indexOf(searchText) > -1 // database name
|| row[3]?.toLowerCase()?.indexOf(searchText) > -1 // state
|| row[4]?.toLowerCase()?.indexOf(searchText) > -1 // size
|| row[5]?.toLowerCase()?.indexOf(searchText) > -1; // last backup date
|| row[4]?.toLowerCase()?.indexOf(searchText) > -1; // size
});
}
@@ -208,14 +207,6 @@ export class DatabaseSelectorPage extends MigrationWizardPage {
cssClass: cssClass,
headerCssClass: cssClass,
},
{
name: constants.LAST_BACKUP,
value: 'lastBackup',
type: azdata.ColumnType.text,
width: 130,
cssClass: cssClass,
headerCssClass: cssClass,
},
]
}).component();
@@ -242,20 +233,15 @@ export class DatabaseSelectorPage extends MigrationWizardPage {
}
private async _loadDatabaseList(stateMachine: MigrationStateModel, selectedDatabases: string[]): Promise<void> {
const providerId = (await stateMachine.getSourceConnectionProfile()).providerId;
const metaDataService = azdata.dataprotocol.getProvider<azdata.MetadataProvider>(
providerId,
azdata.DataProviderType.MetadataProvider);
const ownerUri = await azdata.connection.getUriForConnection(
stateMachine.sourceConnectionId);
const excludeDbs: string[] = [
'master',
'tempdb',
'msdb',
'model'
];
const databaseList = (<azdata.DatabaseInfo[]>await metaDataService
.getDatabases(ownerUri))
const databaseList = (<azdata.DatabaseInfo[]>await this.migrationStateModel
.getDatabasesList())
.filter(database => !excludeDbs.includes(database.options.name))
|| [];
@@ -274,7 +260,6 @@ export class DatabaseSelectorPage extends MigrationWizardPage {
databaseName,
database.options.state,
database.options.sizeInMB,
database.options.lastBackup,
];
}) || [];
}