diff --git a/extensions/sql-migration/src/dialog/migrationCutover/migrationCutoverDialog.ts b/extensions/sql-migration/src/dialog/migrationCutover/migrationCutoverDialog.ts index 805de9b713..7e5b49b87c 100644 --- a/extensions/sql-migration/src/dialog/migrationCutover/migrationCutoverDialog.ts +++ b/extensions/sql-migration/src/dialog/migrationCutover/migrationCutoverDialog.ts @@ -526,17 +526,18 @@ export class MigrationCutoverDialog { if (this._shouldDisplayBackupFileTable()) { tableData.push( - { - fileName: activeBackupSet.listOfBackupFiles[0].fileName, - type: activeBackupSet.backupType, - status: activeBackupSet.listOfBackupFiles[0].status, - dataUploaded: `${convertByteSizeToReadableUnit(activeBackupSet.listOfBackupFiles[0].dataWritten)}/ ${convertByteSizeToReadableUnit(activeBackupSet.listOfBackupFiles[0].totalSize)}`, - copyThroughput: (activeBackupSet.listOfBackupFiles[0].copyThroughput) ? (activeBackupSet.listOfBackupFiles[0].copyThroughput / 1024).toFixed(2) : '-', - backupStartTime: activeBackupSet.backupStartDate, - firstLSN: activeBackupSet.firstLSN, - lastLSN: activeBackupSet.lastLSN - - } + ...activeBackupSet.listOfBackupFiles.map(f => { + return { + fileName: f.fileName, + type: activeBackupSet.backupType, + status: f.status, + dataUploaded: `${convertByteSizeToReadableUnit(f.dataWritten)}/ ${convertByteSizeToReadableUnit(f.totalSize)}`, + copyThroughput: (f.copyThroughput) ? (f.copyThroughput / 1024).toFixed(2) : '-', + backupStartTime: activeBackupSet.backupStartDate, + firstLSN: activeBackupSet.firstLSN, + lastLSN: activeBackupSet.lastLSN + }; + }) ); } diff --git a/extensions/sql-migration/src/models/stateMachine.ts b/extensions/sql-migration/src/models/stateMachine.ts index 200df1ce3c..caa6a5c433 100644 --- a/extensions/sql-migration/src/models/stateMachine.ts +++ b/extensions/sql-migration/src/models/stateMachine.ts @@ -190,15 +190,15 @@ export class MigrationStateModel implements Model, vscode.Disposable { try { this._assessmentApiResponse = (await this.migrationService.getAssessments(ownerUri, this._databaseAssessment))!; this._assessmentResults = { - issues: this._assessmentApiResponse.assessmentResult.items, - databaseAssessments: this._assessmentApiResponse.assessmentResult.databases.map(d => { + issues: this._assessmentApiResponse?.assessmentResult?.items ?? [], + databaseAssessments: this._assessmentApiResponse?.assessmentResult?.databases?.map(d => { return { name: d.name, issues: d.items, errors: d.errors }; - }), - errors: this._assessmentApiResponse.errors + }) ?? [], + errors: this._assessmentApiResponse?.errors ?? [] }; } catch (error) { this._assessmentResults = { diff --git a/extensions/sql-migration/src/wizard/skuRecommendationPage.ts b/extensions/sql-migration/src/wizard/skuRecommendationPage.ts index 4aa688c635..c9063e1a09 100644 --- a/extensions/sql-migration/src/wizard/skuRecommendationPage.ts +++ b/extensions/sql-migration/src/wizard/skuRecommendationPage.ts @@ -447,16 +447,31 @@ export class SKURecommendationPage extends MigrationWizardPage { await this.migrationStateModel.getDatabaseAssessments(); this._detailsComponent.value = constants.SKU_RECOMMENDATION_ALL_SUCCESSFUL(this.migrationStateModel._assessmentResults.databaseAssessments.length); - const error = this.migrationStateModel._assessmentResults.assessmentError; - if (error) { + const errors: string[] = []; + const assessmentError = this.migrationStateModel._assessmentResults.assessmentError; + if (assessmentError) { + errors.push(`message: ${assessmentError.message} +stack: ${assessmentError.stack} +`); + } + if (this.migrationStateModel?._assessmentResults?.errors?.length! > 0) { + errors.push(...this.migrationStateModel._assessmentResults.errors?.map(e => `message: ${e.message} +errorSummary: ${e.errorSummary} +possibleCauses: ${e.possibleCauses} +guidance: ${e.guidance} +errorId: ${e.errorId} +`)!); + } + + if (errors.length > 0) { this.wizard.message = { text: constants.SKU_RECOMMENDATION_ASSESSMENT_ERROR(serverName), - description: error.message + EOL + error.stack, + description: errors.join(EOL), level: azdata.window.MessageLevel.Error }; } - this.migrationStateModel._runAssessments = !!error; + this.migrationStateModel._runAssessments = errors.length > 0; } catch (e) { console.log(e); }