public async void DeployWithSqlCmdVariables() { var result = GetLiveAutoCompleteTestObjects(); SqlTestDb sourceDb = await SqlTestDb.CreateNewAsync(TestServerType.OnPrem, query : storedProcScript, dbNamePrefix : "DacFxDeploySqlCmdVarsTest"); SqlTestDb targetDb = null; try { DacFxService service = new DacFxService(); // First extract a db to have a dacpac to deploy later string dacpacPath = InitialExtract(service, sourceDb, result); // Deploy the created dacpac with SqlCmdVars var deployParams = new DeployParams { PackageFilePath = dacpacPath, DatabaseName = string.Concat(sourceDb.DatabaseName, "-deployed"), UpgradeExisting = false, SqlCommandVariableValues = new Dictionary <string, string>() { { databaseRefVarName, "OtherDatabase" }, { filterValueVarName, "Employee" } } }; DeployOperation deployOperation = new DeployOperation(deployParams, result.ConnectionInfo); service.PerformOperation(deployOperation, TaskExecutionMode.Execute); targetDb = SqlTestDb.CreateFromExisting(deployParams.DatabaseName); string deployedProc; using (SqlConnection conn = new SqlConnection(targetDb.ConnectionString)) { try { await conn.OpenAsync(); deployedProc = (string)ReliableConnectionHelper.ExecuteScalar(conn, "SELECT OBJECT_DEFINITION (OBJECT_ID(N'Procedure1'));"); } finally { conn.Close(); } } Assert.Contains(deployParams.SqlCommandVariableValues[databaseRefVarName], deployedProc); Assert.Contains(deployParams.SqlCommandVariableValues[filterValueVarName], deployedProc); VerifyAndCleanup(dacpacPath); } finally { sourceDb.Cleanup(); if (targetDb != null) { targetDb.Cleanup(); } } }
private async Task <Mock <RequestContext <DacFxResult> > > SendAndValidateGenerateDeployScriptRequest() { // first extract a dacpac var result = GetLiveAutoCompleteTestObjects(); var extractRequestContext = new Mock <RequestContext <DacFxResult> >(); extractRequestContext.Setup(x => x.SendResult(It.IsAny <DacFxResult>())).Returns(Task.FromResult(new object())); SqlTestDb sourceDb = await SqlTestDb.CreateNewAsync(TestServerType.OnPrem, false, null, null, "DacFxGenerateScriptTest"); string folderPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "DacFxTest"); Directory.CreateDirectory(folderPath); var extractParams = new ExtractParams { DatabaseName = sourceDb.DatabaseName, PackageFilePath = Path.Combine(folderPath, string.Format("{0}.dacpac", sourceDb.DatabaseName)), ApplicationName = "test", ApplicationVersion = "1.0.0.0" }; DacFxService service = new DacFxService(); ExtractOperation extractOperation = new ExtractOperation(extractParams, result.ConnectionInfo); service.PerformOperation(extractOperation); // generate script var generateScriptRequestContext = new Mock <RequestContext <DacFxResult> >(); generateScriptRequestContext.Setup(x => x.SendResult(It.IsAny <DacFxResult>())).Returns(Task.FromResult(new object())); var generateScriptParams = new GenerateDeployScriptParams { PackageFilePath = extractParams.PackageFilePath, DatabaseName = string.Concat(sourceDb.DatabaseName, "-deployed"), ScriptFilePath = Path.Combine(folderPath, string.Concat(sourceDb.DatabaseName, "_", "UpgradeDACScript.sql")) }; GenerateDeployScriptOperation generateScriptOperation = new GenerateDeployScriptOperation(generateScriptParams, result.ConnectionInfo); service.PerformOperation(generateScriptOperation); SqlTestDb targetDb = SqlTestDb.CreateFromExisting(generateScriptParams.DatabaseName); // cleanup VerifyAndCleanup(generateScriptParams.ScriptFilePath); VerifyAndCleanup(extractParams.PackageFilePath); sourceDb.Cleanup(); targetDb.Cleanup(); return(generateScriptRequestContext); }
private async Task <Mock <RequestContext <DacFxResult> > > SendAndValidateDeployRequest() { // first extract a db to have a dacpac to import later var result = GetLiveAutoCompleteTestObjects(); var extractRequestContext = new Mock <RequestContext <DacFxResult> >(); extractRequestContext.Setup(x => x.SendResult(It.IsAny <DacFxResult>())).Returns(Task.FromResult(new object())); SqlTestDb sourceDb = await SqlTestDb.CreateNewAsync(TestServerType.OnPrem, false, null, null, "DacFxDeployTest"); string folderPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "DacFxTest"); Directory.CreateDirectory(folderPath); var extractParams = new ExtractParams { DatabaseName = sourceDb.DatabaseName, PackageFilePath = Path.Combine(folderPath, string.Format("{0}.dacpac", sourceDb.DatabaseName)), ApplicationName = "test", ApplicationVersion = new Version(1, 0) }; SqlConnection sqlConn = ConnectionService.OpenSqlConnection(result.ConnectionInfo, "Deploy"); DacFxService service = new DacFxService(); ExtractOperation extractOperation = new ExtractOperation(extractParams, sqlConn); service.PerformOperation(extractOperation); // deploy the created dacpac var deployRequestContext = new Mock <RequestContext <DacFxResult> >(); deployRequestContext.Setup(x => x.SendResult(It.IsAny <DacFxResult>())).Returns(Task.FromResult(new object())); var deployParams = new DeployParams { PackageFilePath = extractParams.PackageFilePath, DatabaseName = string.Concat(sourceDb.DatabaseName, "-deployed"), UpgradeExisting = false }; DeployOperation deployOperation = new DeployOperation(deployParams, sqlConn); service.PerformOperation(deployOperation); SqlTestDb targetDb = SqlTestDb.CreateFromExisting(deployParams.DatabaseName); // cleanup VerifyAndCleanup(extractParams.PackageFilePath); sourceDb.Cleanup(); targetDb.Cleanup(); return(deployRequestContext); }
private async Task <Mock <RequestContext <DacFxResult> > > SendAndValidateImportRequest() { // first export a bacpac var result = GetLiveAutoCompleteTestObjects(); var exportRequestContext = new Mock <RequestContext <DacFxResult> >(); exportRequestContext.Setup(x => x.SendResult(It.IsAny <DacFxResult>())).Returns(Task.FromResult(new object())); SqlTestDb sourceDb = await SqlTestDb.CreateNewAsync(TestServerType.OnPrem, false, null, null, "DacFxImportTest"); string folderPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "DacFxTest"); Directory.CreateDirectory(folderPath); var exportParams = new ExportParams { DatabaseName = sourceDb.DatabaseName, PackageFilePath = Path.Combine(folderPath, string.Format("{0}.bacpac", sourceDb.DatabaseName)) }; SqlConnection sqlConn = ConnectionService.OpenSqlConnection(result.ConnectionInfo, "Import"); DacFxService service = new DacFxService(); ExportOperation exportOperation = new ExportOperation(exportParams, sqlConn); service.PerformOperation(exportOperation); // import the created bacpac var importRequestContext = new Mock <RequestContext <DacFxResult> >(); importRequestContext.Setup(x => x.SendResult(It.IsAny <DacFxResult>())).Returns(Task.FromResult(new object())); var importParams = new ImportParams { PackageFilePath = exportParams.PackageFilePath, DatabaseName = string.Concat(sourceDb.DatabaseName, "-imported") }; ImportOperation importOperation = new ImportOperation(importParams, sqlConn); service.PerformOperation(importOperation); SqlTestDb targetDb = SqlTestDb.CreateFromExisting(importParams.DatabaseName); // cleanup VerifyAndCleanup(exportParams.PackageFilePath); sourceDb.Cleanup(); targetDb.Cleanup(); return(importRequestContext); }
public async void DeployDacpac() { // first extract a db to have a dacpac to import later var result = GetLiveAutoCompleteTestObjects(); SqlTestDb sourceDb = await SqlTestDb.CreateNewAsync(TestServerType.OnPrem, false, null, null, "DacFxDeployTest"); SqlTestDb targetDb = null; string folderPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "DacFxTest"); Directory.CreateDirectory(folderPath); try { var extractParams = new ExtractParams { DatabaseName = sourceDb.DatabaseName, PackageFilePath = Path.Combine(folderPath, string.Format("{0}.dacpac", sourceDb.DatabaseName)), ApplicationName = "test", ApplicationVersion = "1.0.0.0" }; DacFxService service = new DacFxService(); ExtractOperation extractOperation = new ExtractOperation(extractParams, result.ConnectionInfo); service.PerformOperation(extractOperation, TaskExecutionMode.Execute); // deploy the created dacpac var deployParams = new DeployParams { PackageFilePath = extractParams.PackageFilePath, DatabaseName = string.Concat(sourceDb.DatabaseName, "-deployed"), UpgradeExisting = false }; DeployOperation deployOperation = new DeployOperation(deployParams, result.ConnectionInfo); service.PerformOperation(deployOperation, TaskExecutionMode.Execute); targetDb = SqlTestDb.CreateFromExisting(deployParams.DatabaseName); VerifyAndCleanup(extractParams.PackageFilePath); } finally { sourceDb.Cleanup(); if (targetDb != null) { targetDb.Cleanup(); } } }
public async void ImportBacpac() { // first export a bacpac var result = GetLiveAutoCompleteTestObjects(); SqlTestDb sourceDb = await SqlTestDb.CreateNewAsync(TestServerType.OnPrem, false, null, null, "DacFxImportTest"); SqlTestDb targetDb = null; string folderPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "DacFxTest"); Directory.CreateDirectory(folderPath); try { var exportParams = new ExportParams { DatabaseName = sourceDb.DatabaseName, PackageFilePath = Path.Combine(folderPath, string.Format("{0}.bacpac", sourceDb.DatabaseName)) }; DacFxService service = new DacFxService(); ExportOperation exportOperation = new ExportOperation(exportParams, result.ConnectionInfo); service.PerformOperation(exportOperation, TaskExecutionMode.Execute); // import the created bacpac var importParams = new ImportParams { PackageFilePath = exportParams.PackageFilePath, DatabaseName = string.Concat(sourceDb.DatabaseName, "-imported") }; ImportOperation importOperation = new ImportOperation(importParams, result.ConnectionInfo); service.PerformOperation(importOperation, TaskExecutionMode.Execute); targetDb = SqlTestDb.CreateFromExisting(importParams.DatabaseName); VerifyAndCleanup(exportParams.PackageFilePath); } finally { sourceDb.Cleanup(); if (targetDb != null) { targetDb.Cleanup(); } } }