mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-01-19 09:35:36 -05:00
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:
@@ -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 [];
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user