Read server options from publish profile (#21960)

* Read encrypt and trust server certificate

* Set hostname in certificate setting

* Address comment- open connection dialog if the connection string in publish profile doesn't load a connection, instead of throwing an error.
This commit is contained in:
Sakshi Sharma
2023-02-16 16:12:43 -08:00
committed by GitHub
parent f25c250547
commit 7c6ae87fc8
3 changed files with 26 additions and 3 deletions

View File

@@ -546,6 +546,9 @@ export const authenticationSetting = 'Authentication';
export const activeDirectoryInteractive = 'active directory interactive';
export const userIdSetting = 'User ID';
export const passwordSetting = 'Password';
export const encryptSetting = 'Encrypt';
export const trustServerCertificateSetting = 'Trust Server Certificate';
export const hostnameInCertificateSetting = 'Host Name in Certificate';
export const azureAddAccount = localize('azureAddAccount', "Add an Account...");

View File

@@ -62,6 +62,18 @@ export class SqlConnectionDataSource extends DataSource {
return this.getSetting(constants.passwordSetting);
}
public get encrypt(): string {
return this.getSetting(constants.encryptSetting);
}
public get trustServerCertificate(): string {
return this.getSetting(constants.trustServerCertificateSetting);
}
public get hostnameInCertificate(): string {
return this.getSetting(constants.hostnameInCertificateSetting);
}
constructor(name: string, connectionString: string) {
super(name);
@@ -100,7 +112,11 @@ export class SqlConnectionDataSource extends DataSource {
providerName: 'MSSQL',
saveProfile: true,
id: this.name + '-dataSource',
options: []
options: {
'encrypt': this.encrypt,
'trustServerCertificate': this.trustServerCertificate,
'hostnameInCertificate': this.hostnameInCertificate
}
};
return connProfile;

View File

@@ -89,8 +89,12 @@ async function readConnectionString(xmlDoc: any): Promise<{ connectionId: string
if (dataSource.integratedSecurity) {
if (azdataApi) {
const connectionResult = await utils.getAzdataApi()!.connection.connect(connectionProfile, false, false);
utils.throwIfNotConnected(connectionResult);
connId = connectionResult.connectionId!;
if (!connectionResult.connected) {
const connection = await utils.getAzdataApi()!.connection.openConnectionDialog(undefined, connectionProfile);
connId = connection.connectionId;
} else {
connId = connectionResult.connectionId!;
}
} else {
// TODO@chgagnon - hook up VS Code MSSQL
}