copying dacpac to temp folder before deploying (#11036)

This commit is contained in:
Benjin Dubishar
2020-06-23 02:18:04 -07:00
committed by GitHub
parent cfbce96fe2
commit a4a8beb6b4
3 changed files with 61 additions and 5 deletions

View File

@@ -6,6 +6,7 @@
import * as constants from '../common/constants';
import * as dataSources from '../models/dataSources/dataSources';
import * as mssql from '../../../mssql';
import * as os from 'os';
import * as path from 'path';
import * as utils from '../common/utils';
import * as UUID from 'vscode-languageclient/lib/utils/uuid';
@@ -222,13 +223,17 @@ export class ProjectsController {
return undefined; // buildProject() handles displaying the error
}
const dacFxService = await ProjectsController.getDaxFxService();
// copy dacpac to temp location before deployment
const tempPath = path.join(os.tmpdir(), `${path.parse(dacpacPath).name}_${new Date().getTime()}${constants.sqlprojExtension}`);
await fs.copyFile(dacpacPath, tempPath);
const dacFxService = await this.getDaxFxService();
if ((<IDeploymentProfile>profile).upgradeExisting) {
return await dacFxService.deployDacpac(dacpacPath, profile.databaseName, (<IDeploymentProfile>profile).upgradeExisting, profile.connectionUri, TaskExecutionMode.execute, profile.sqlCmdVariables);
return await dacFxService.deployDacpac(tempPath, profile.databaseName, (<IDeploymentProfile>profile).upgradeExisting, profile.connectionUri, TaskExecutionMode.execute, profile.sqlCmdVariables);
}
else {
return await dacFxService.generateDeployScript(dacpacPath, profile.databaseName, profile.connectionUri, TaskExecutionMode.script, profile.sqlCmdVariables);
return await dacFxService.generateDeployScript(tempPath, profile.databaseName, profile.connectionUri, TaskExecutionMode.script, profile.sqlCmdVariables);
}
}
@@ -511,7 +516,7 @@ export class ProjectsController {
}
}
private static async getDaxFxService(): Promise<mssql.IDacFxService> {
public async getDaxFxService(): Promise<mssql.IDacFxService> {
const ext: Extension<any> = extensions.getExtension(mssql.extension.name)!;
await ext.activate();