diff --git a/extensions/import/src/wizard/pages/fileConfigPage.ts b/extensions/import/src/wizard/pages/fileConfigPage.ts index aba902109a..1d19b6a52e 100644 --- a/extensions/import/src/wizard/pages/fileConfigPage.ts +++ b/extensions/import/src/wizard/pages/fileConfigPage.ts @@ -124,6 +124,9 @@ export class FileConfigPage extends ImportPage { this.databaseDropdown.onValueChanged(async (db) => { this.model.database = (this.databaseDropdown.value).name; //this.populateTableNames(); + let connectionProvider = azdata.dataprotocol.getProvider(this.model.server.providerName, azdata.DataProviderType.ConnectionProvider); + let connectionUri = await azdata.connection.getUriForConnection(this.model.server.connectionId); + connectionProvider.changeDatabase(connectionUri, this.model.database); this.populateSchemaDropdown(); }); @@ -146,13 +149,25 @@ export class FileConfigPage extends ImportPage { return false; } - let values = await this.getDatabaseValues(); + let defaultServerDatabase = this.model.server.options.database; - this.model.database = values[0].name; + let values: any[]; + try { + values = await this.getDatabaseValues(); + } catch (error) { + // This code is used in case of contained databases when the query will return an error. + console.log(error); + values = [{ displayName: defaultServerDatabase, name: defaultServerDatabase }]; + this.databaseDropdown.editable = false; + } + + this.model.database = defaultServerDatabase; this.databaseDropdown.updateProperties({ values: values }); + + this.databaseDropdown.value = { displayName: this.model.database, name: this.model.database }; this.databaseLoader.loading = false; return true; @@ -266,11 +281,11 @@ export class FileConfigPage extends ImportPage { private async populateSchemaDropdown(): Promise { this.schemaLoader.loading = true; + let connectionUri = await azdata.connection.getUriForConnection(this.model.server.connectionId); let queryProvider = azdata.dataprotocol.getProvider(this.model.server.providerName, azdata.DataProviderType.QueryProvider); - const escapedQuotedDb = this.databaseDropdown.value ? `[${(this.databaseDropdown.value).name.replace(/]/g, ']]')}].` : ''; - const query = `SELECT name FROM ${escapedQuotedDb}sys.schemas`; + const query = `SELECT name FROM sys.schemas`; let results = await queryProvider.runQueryAndReturn(connectionUri, query);