[SQL-Migration] Enable login migrations to SQL VM (#21776)

This PR adds support for migrating logins to SQL VM. Adding support for 2 scenarios supported here: VMs with private IP and public IP.
This commit is contained in:
AkshayMata
2023-01-31 09:47:16 -08:00
committed by GitHub
parent 66bdc54c89
commit fcece32cdd
5 changed files with 255 additions and 31 deletions

View File

@@ -7,7 +7,7 @@ import * as azdata from 'azdata';
import * as azurecore from 'azurecore';
import * as vscode from 'vscode';
import * as mssql from 'mssql';
import { SqlMigrationService, SqlManagedInstance, startDatabaseMigration, StartDatabaseMigrationRequest, StorageAccount, SqlVMServer, getLocationDisplayName, getSqlManagedInstanceDatabases, AzureSqlDatabaseServer, isSqlManagedInstance, isAzureSqlDatabaseServer, VirtualMachineInstanceView } from '../api/azure';
import { SqlMigrationService, SqlManagedInstance, startDatabaseMigration, StartDatabaseMigrationRequest, StorageAccount, SqlVMServer, getLocationDisplayName, getSqlManagedInstanceDatabases, AzureSqlDatabaseServer, VirtualMachineInstanceView } from '../api/azure';
import * as constants from '../constants/strings';
import * as nls from 'vscode-nls';
import { v4 as uuidv4 } from 'uuid';
@@ -533,24 +533,13 @@ export class MigrationStateModel implements Model, vscode.Disposable {
return await azdata.connection.getConnectionString(this._sourceConnectionId, true);
}
public async setTargetServerName(): Promise<void> {
// If target server name has already been set, we can skip this part
if (this._targetServerName) {
return;
}
if (isSqlManagedInstance(this._targetServerInstance) || isAzureSqlDatabaseServer(this._targetServerInstance)) {
this._targetServerName = this._targetServerName ?? this._targetServerInstance.properties.fullyQualifiedDomainName;
}
}
public async getTargetConnectionString(): Promise<string> {
await this.setTargetServerName();
const connectionProfile = getConnectionProfile(
this._targetServerName,
this._targetServerInstance,
this._targetServerInstance.id,
this._targetUserName,
this._targetPassword);
this._targetPassword,
true /* trustServerCertificate */);
const result = await azdata.connection.connect(connectionProfile, false, false);
if (result.connected && result.connectionId) {