diff --git a/extensions/mssql/src/mssql.d.ts b/extensions/mssql/src/mssql.d.ts index e2bcffe944..6f26b507c4 100644 --- a/extensions/mssql/src/mssql.d.ts +++ b/extensions/mssql/src/mssql.d.ts @@ -523,6 +523,7 @@ export interface SqlMigrationImpactedObjectInfo { export interface SqlMigrationAssessmentResultItem { rulesetVersion: string; rulesetName: string; + ruleId: string; targetType: azdata.sqlAssessment.SqlAssessmentTargetType; targetName: string; checkId: string; diff --git a/extensions/sql-migration/src/dialog/assessmentResults/sqlDatabasesTree.ts b/extensions/sql-migration/src/dialog/assessmentResults/sqlDatabasesTree.ts index 8199da0c96..2b8079fef2 100644 --- a/extensions/sql-migration/src/dialog/assessmentResults/sqlDatabasesTree.ts +++ b/extensions/sql-migration/src/dialog/assessmentResults/sqlDatabasesTree.ts @@ -40,6 +40,12 @@ const headerRight: azdata.CssStyles = { 'border-bottom': '1px solid' }; +const blockingIssues: Array = [ + 'MultipleLogFiles', + 'FileStream', + 'MIDatabaseSize' +]; + export class SqlDatabaseTree { private _view!: azdata.ModelView; private _instanceTable!: azdata.DeclarativeTableComponent; @@ -802,15 +808,19 @@ export class SqlDatabaseTree { // Reset the dbName list so that it is in sync with the table this._dbNames = this._model._assessmentResults.databaseAssessments.map(da => da.name); this._model._assessmentResults.databaseAssessments.forEach((db) => { + let selectable = true; + if (db.issues.find(item => blockingIssues.includes(item.ruleId))) { + selectable = false; + } this._databaseTableValues.push( [ { value: selectedDbs.includes(db.name), - enabled: db.issues.length === 0, - style: styleLeft + style: styleLeft, + enabled: selectable }, { - value: this.createIconTextCell((db.issues.length === 0) ? IconPathHelper.sqlDatabaseLogo : IconPathHelper.sqlDatabaseWarningLogo, db.name), + value: this.createIconTextCell((selectable) ? IconPathHelper.sqlDatabaseLogo : IconPathHelper.sqlDatabaseWarningLogo, db.name), style: styleLeft }, {