public void RunDacPackage(SqlConnectionStringBuilder builder, string dacPacFileName) { var dacOptions = new DacDeployOptions { BlockOnPossibleDataLoss = true }; var dacServiceInstance = new DacServices(builder.ConnectionString); dacServiceInstance.Message += (s, e) => _package.SetStatus(e.Message.Message); using (var dacpac = DacPackage.Load(dacPacFileName)) { dacServiceInstance.Deploy(dacpac, builder.InitialCatalog, upgradeExisting: true, options: dacOptions); } _package.SetStatus("Database deployed successfully to LocalDB"); }
public void VerifyDatabase(object sender, ExecutedRoutedEventArgs e) { var databaseInfo = ValidateMenuInfo(sender); if (databaseInfo == null) { return; } try { var helper = Helpers.RepositoryHelper.CreateEngineHelper(databaseInfo.DatabaseInfo.DatabaseType); helper.VerifyDatabase(databaseInfo.DatabaseInfo.ConnectionString); package.SetStatus("Verify completed"); DataConnectionHelper.LogUsage("DatabaseMaintainVerify"); } catch (Exception ex) { DataConnectionHelper.SendError(ex, databaseInfo.DatabaseInfo.DatabaseType, false); } }
private void ExportServerDatabaseToEmbedded(DatabaseType databaseType, DatabaseMenuCommandParameters parameters) { string filter = DataConnectionHelper.GetSqlCeFileFilter(); Scope scope = Scope.SchemaData; if (databaseType == DatabaseType.SQLite) { filter = DataConnectionHelper.GetSqliteFileFilter(); scope = Scope.SchemaDataSQLite; } Debug.Assert(databaseType == DatabaseType.SQLite || databaseType == DatabaseType.SQLCE40, "Unexpected database type"); try { string connectionString = parameters.DatabaseInfo != null ? parameters.DatabaseInfo.ConnectionString : DataConnectionHelper.PromptForConnectionString(package); if (!string.IsNullOrEmpty(connectionString)) { PickTablesDialog ptd = new PickTablesDialog(); int totalCount = 0; using (IRepository repository = Helpers.DataConnectionHelper.CreateRepository(new DatabaseInfo { ConnectionString = connectionString, DatabaseType = DatabaseType.SQLServer })) { ptd.Tables = repository.GetAllTableNamesForExclusion(); totalCount = ptd.Tables.Count; } bool?res = ptd.ShowModal(); if (res.HasValue && res.Value == true && (ptd.Tables.Count < totalCount)) { string dbName; string dbConnectionString = null; SaveFileDialog fd = new SaveFileDialog(); fd.Title = "Export as"; fd.Filter = filter; fd.OverwritePrompt = true; fd.ValidateNames = true; bool?result = fd.ShowDialog(); if (result.HasValue && result.Value == true) { dbName = fd.FileName; try { if (databaseType == DatabaseType.SQLCE40) { package.SetStatus("Creating SQL Server Compact database..."); SqlCeScripting.SqlCeHelper4 helper = new SqlCeScripting.SqlCeHelper4(); dbConnectionString = string.Format("Data Source={0};Max Database Size=4091", dbName); if (System.IO.File.Exists(dbName)) { File.Delete(dbName); } helper.CreateDatabase(dbConnectionString); } if (databaseType == DatabaseType.SQLite) { package.SetStatus("Creating SQLite database..."); var helper = new SqliteHelper(); dbConnectionString = string.Format("Data Source={0};", dbName); if (System.IO.File.Exists(dbName)) { File.Delete(dbName); } helper.CreateDatabase(dbConnectionString); } BackgroundWorker bw = new BackgroundWorker(); List <object> workerParameters = new List <object>(); workerParameters.Add(dbConnectionString); workerParameters.Add(connectionString); workerParameters.Add(ptd.Tables); workerParameters.Add(databaseType.ToString()); workerParameters.Add(scope.ToString()); bw.DoWork += new DoWorkEventHandler(bw_DoWork); bw.RunWorkerCompleted += (s, ea) => { try { if (ea.Error != null) { Helpers.DataConnectionHelper.SendError(ea.Error, databaseType, false); } Helpers.DataConnectionHelper.LogUsage("DatabasesExportFromServer"); } finally { bw.Dispose(); } }; bw.RunWorkerAsync(workerParameters); } catch (Exception ex) { Helpers.DataConnectionHelper.SendError(ex, databaseType, false); } } } } } catch (Exception ex) { Helpers.DataConnectionHelper.SendError(ex, DatabaseType.SQLServer); } }
private void ExportServerDatabaseToEmbedded(DatabaseType databaseType, DatabaseMenuCommandParameters parameters) { var filter = DataConnectionHelper.GetSqlCeFileFilter(); var scope = Scope.SchemaData; if (databaseType == DatabaseType.SQLite) { filter = DataConnectionHelper.GetSqliteFileFilter(); scope = Scope.SchemaDataSQLite; } Debug.Assert(databaseType == DatabaseType.SQLite || databaseType == DatabaseType.SQLCE40, "Unexpected database type"); try { var connectionString = parameters.DatabaseInfo != null ? parameters.DatabaseInfo.ConnectionString : DataConnectionHelper.PromptForConnectionString(_package); if (!string.IsNullOrEmpty(connectionString)) { var ptd = new PickTablesDialog(); int totalCount; using (var repository = DataConnectionHelper.CreateRepository(new DatabaseInfo { ConnectionString = connectionString, DatabaseType = DatabaseType.SQLServer })) { ptd.Tables = repository.GetAllTableNamesForExclusion(); totalCount = ptd.Tables.Count; } var res = ptd.ShowModal(); if (!res.HasValue || res.Value != true || (ptd.Tables.Count >= totalCount)) { return; } string dbConnectionString = null; var fd = new SaveFileDialog { Title = "Export as", Filter = filter, OverwritePrompt = true, ValidateNames = true }; var result = fd.ShowDialog(); if (!result.HasValue || result.Value != true) { return; } var dbName = fd.FileName; try { if (databaseType == DatabaseType.SQLCE40) { _package.SetStatus("Creating SQL Server Compact database..."); var helper = new SqlCeHelper4(); dbConnectionString = string.Format("Data Source={0};Max Database Size=4091", dbName); if (File.Exists(dbName)) { File.Delete(dbName); } helper.CreateDatabase(dbConnectionString); } if (databaseType == DatabaseType.SQLite) { _package.SetStatus("Creating SQLite database..."); var helper = new SqliteHelper(); dbConnectionString = string.Format("Data Source={0};", dbName); if (File.Exists(dbName)) { File.Delete(dbName); } helper.CreateDatabase(dbConnectionString); } var bw = new BackgroundWorker(); var workerParameters = new List <object> { dbConnectionString, connectionString, ptd.Tables, databaseType.ToString(), scope.ToString() }; bw.DoWork += bw_DoWork; bw.RunWorkerCompleted += (s, ea) => { try { if (ea.Error != null) { DataConnectionHelper.SendError(ea.Error, databaseType, false); } DataConnectionHelper.LogUsage("DatabasesExportFromServer"); } finally { bw.Dispose(); } }; bw.RunWorkerAsync(workerParameters); } catch (Exception ex) { DataConnectionHelper.SendError(ex, databaseType, false); } } } catch (Exception ex) { DataConnectionHelper.SendError(ex, DatabaseType.SQLServer); } }