private static void CreateXmlDiffReport(string srcConString, SqlConnectionStringBuilder TargetCon, DacServices TargetdacServices) { var DiffReport = TargetdacServices.GenerateDriftReport(TargetCon.InitialCatalog); var outDiffReport = GetDacFileName(srcConString) + "_DeployDiff.xml"; System.IO.File.WriteAllText(outDiffReport, DiffReport); Console.WriteLine("DiffReport.{0}", DiffReport); }
private static string MainExec(string sourceDacFilePath, string sourceConnectionString, string targerConnectionString, string username, string password, DacDeployOptions options = null, CancellationTokenSource C_Token = null) { using (var impersonator = new ImpersonateIt()) { impersonator.Impersonate(username, password); //if (!System.IO.File.Exists(sourceDacFilePath)) //{ // Console.WriteLine("source dac file does not exists, Creating new file. "); // if (string.IsNullOrWhiteSpace(sourceConnectionString)) // { // Console.Error.WriteLine("Source Connection string is required for creating a bac file."); // return string.Empty; // } //} Export(sourceConnectionString, @"C:\Temp\Source_dacFile.dacpac"); Export(targerConnectionString, @"C:\Temp\Target_dacFile.dacpac"); var TargetCon = new SqlConnectionStringBuilder(targerConnectionString); var TargetdacServices = new DacServices(TargetCon.ConnectionString); TargetdacServices.Message += ((s, e) => { Console.WriteLine(e?.Message.ToString()); }); TargetdacServices.ProgressChanged += ((s, e) => { Console.WriteLine("Status:{0}, Message:{1}", e?.Status, e?.Message.ToString()); }); if (options == null) { options = new DacDeployOptions(); } using (DacPackage dacpac = DacPackage.Load(sourceDacFilePath, DacSchemaModelStorageType.Memory)) { // Script then deploy, to support debugging of the generated plan // string script = dacServices.GenerateDeployScript(dacpac, dbName, options); var deployReport = TargetdacServices.GenerateDeployReport(dacpac, TargetCon.InitialCatalog); var deployScript = TargetdacServices.GenerateDeployScript(dacpac, TargetCon.InitialCatalog); var DiffReport = TargetdacServices.GenerateDriftReport(TargetCon.InitialCatalog); var outReportPath = Path.Combine(@"C:\Temp\", "DeployReport_" + DateTime.Now.ToString("yyyyMMMdd HHmmsstt") + ".sql"); System.IO.File.WriteAllText(outReportPath, deployReport); var outScriptPath = Path.Combine(@"C:\Temp\", "DeployScript_" + DateTime.Now.ToString("yyyyMMMdd HHmmsstt") + ".sql"); System.IO.File.WriteAllText(outScriptPath, deployScript); var outDiffReport = Path.Combine(@"C:\Temp\", "DeployDiff_" + DateTime.Now.ToString("yyyyMMMdd HHmmsstt") + ".sql"); System.IO.File.WriteAllText(outDiffReport, DiffReport); Console.WriteLine("output Report and script generated."); Console.WriteLine("DeployReport.{0}", deployReport); Console.WriteLine("DiffReport.{0}", DiffReport); Console.WriteLine("DeployScript.{0}", deployScript); return("Done."); } } return(""); }