diff --git a/extensions/sql-database-projects/src/common/constants.ts b/extensions/sql-database-projects/src/common/constants.ts index ef6ec4aa80..a01be69b2e 100644 --- a/extensions/sql-database-projects/src/common/constants.ts +++ b/extensions/sql-database-projects/src/common/constants.ts @@ -87,6 +87,7 @@ export const databaseNameRequired = localize('databaseNameRequired', "Database n export const invalidDataSchemaProvider = localize('invalidDataSchemaProvider', "Invalid DSP in .sqlproj file"); export const invalidDatabaseReference = localize('invalidDatabaseReference', "Invalid database reference in .sqlproj file"); export const databaseSelectionRequired = localize('databaseSelectionRequired', "Database selection is required to import a project"); +export const unableToCreateDeploymentConnection = localize('unableToCreateDeploymentConnection', "Unable to construct connection"); export function projectAlreadyOpened(path: string) { return localize('projectAlreadyOpened', "Project '{0}' is already opened.", path); } export function projectAlreadyExists(name: string, path: string) { return localize('projectAlreadyExists', "A project named {0} already exists in {1}.", name, path); } export function noFileExist(fileName: string) { return localize('noFileExist', "File {0} doesn't exist", fileName); } diff --git a/extensions/sql-database-projects/src/dialogs/deployDatabaseDialog.ts b/extensions/sql-database-projects/src/dialogs/deployDatabaseDialog.ts index fe2a991fbc..cd0f3cb7f3 100644 --- a/extensions/sql-database-projects/src/dialogs/deployDatabaseDialog.ts +++ b/extensions/sql-database-projects/src/dialogs/deployDatabaseDialog.ts @@ -6,6 +6,7 @@ import * as azdata from 'azdata'; import * as vscode from 'vscode'; import * as constants from '../common/constants'; +import * as utils from '../common/utils'; import { Project } from '../models/project'; import { SqlConnectionDataSource } from '../models/dataSources/sqlConnectionStringSource'; @@ -115,42 +116,47 @@ export class DeployDatabaseDialog { } public async getConnectionUri(): Promise { - // if target connection is a data source, have to check if already connected or if connection dialog needs to be opened - let connId: string; + try { + // if target connection is a data source, have to check if already connected or if connection dialog needs to be opened + let connId: string; - if (this.dataSourcesRadioButton?.checked) { - const dataSource = (this.dataSourcesDropDown!.value! as DataSourceDropdownValue).dataSource; + if (this.connectionIsDataSource) { + const dataSource = (this.dataSourcesDropDown!.value! as DataSourceDropdownValue).dataSource; - const connProfile: azdata.IConnectionProfile = { - serverName: dataSource.server, - databaseName: dataSource.database, - connectionName: dataSource.name, - userName: dataSource.username, - password: dataSource.password, - authenticationType: dataSource.integratedSecurity ? 'Integrated' : 'SqlAuth', - savePassword: false, - providerName: 'MSSQL', - saveProfile: true, - id: dataSource.name + '-dataSource', - options: [] - }; + const connProfile: azdata.IConnectionProfile = { + serverName: dataSource.server, + databaseName: dataSource.database, + connectionName: dataSource.name, + userName: dataSource.username, + password: dataSource.password, + authenticationType: dataSource.integratedSecurity ? 'Integrated' : 'SqlAuth', + savePassword: false, + providerName: 'MSSQL', + saveProfile: true, + id: dataSource.name + '-dataSource', + options: [] + }; - if (dataSource.integratedSecurity) { - connId = (await this.apiWrapper.connectionConnect(connProfile, false, false)).connectionId; + if (dataSource.integratedSecurity) { + connId = (await this.apiWrapper.connectionConnect(connProfile, false, false)).connectionId; + } + else { + connId = (await this.apiWrapper.openConnectionDialog(undefined, connProfile)).connectionId; + } } else { - connId = (await this.apiWrapper.openConnectionDialog(undefined, connProfile)).connectionId; - } - } - else { - if (!this.connection) { - throw new Error('Connection not defined.'); + if (!this.connection) { + throw new Error('Connection not defined.'); + } + + connId = this.connection?.connectionId; } - connId = this.connection?.connectionId; + return await this.apiWrapper.getUriForConnection(connId); + } + catch (err) { + throw new Error(constants.unableToCreateDeploymentConnection + ': ' + utils.getErrorMessage(err)); } - - return await this.apiWrapper.getUriForConnection(connId); } public async deployClick(): Promise {