public void ConnectDatabase(Database.Information databaseConfiguration) { submittedDatabaseConfiguration = databaseConfiguration.Duplicate(); Server.Information serverInfo = communicator.ServerInformation; if (serverInfo.DatabaseInformation.Status == Database.Status.ConfigurationOnProgress) return; Database.Information previousDatabaseInformation = serverInfo.DatabaseInformation.Duplicate(); serverInfo.DatabaseInformation.Status = Database.Status.ConfigurationOnProgress; IEnumerable<KeyValuePair<string, ICommunicatorCallback>> callBackList = communicator.ClientList.Where(itm => itm.Key != communicator.CurrentSessionID); foreach (KeyValuePair<string, ICommunicatorCallback> callback in callBackList) { connectionDatabaseCallbackWorkerList.Add(new BackgroundWorker()); BackgroundWorker bWorker = connectionDatabaseCallbackWorkerList[connectionDatabaseCallbackWorkerList.Count - 1]; bWorker.DoWork += connectionDatabaseCallbackWorker_DoWork; bWorker.RunWorkerCompleted += connectionDatabaseCallbackWorker_RunWorkerCompleted; List<object> arguments = new List<object>(); arguments.Add(callback); arguments.Add(previousDatabaseInformation); bWorker.RunWorkerAsync(arguments); } configureDatabaseConnectionWorker = new BackgroundWorker(); configureDatabaseConnectionWorker.DoWork += configureDatabaseConnectionWorker_DoWork; configureDatabaseConnectionWorker.RunWorkerCompleted += configureDatabaseConnectionWorker_RunWorkerCompleted; configureDatabaseConnectionWorker.RunWorkerAsync(); }
public Status Validate(ref Information databaseInformation) { if (!resourceBuilder.IsFileAvailable) { databaseInformation.Status = Status.RequiresConfiguration; return databaseInformation.Status; } return databaseInformation.Status; }
private ConfigurationSteps CheckDatabase(Information databaseInformation) { ConfigurationSteps result = ConfigurationSteps.CheckingDatabase; using (SqlConnection connection = new SqlConnection(masterConnectionString)) { connection.Open(); using (SqlCommand command = new SqlCommand(string.Format("SELECT COUNT(name) AS databaseCount FROM sysdatabases WHERE name = '{0}'", databaseInformation.DatabaseName), connection)) { SqlDataReader reader = command.ExecuteReader(System.Data.CommandBehavior.SingleRow); result = ((int)(reader.Read() ? reader.GetInt32(0) : -1)) > 0 ? ConfigurationSteps.DatabaseAvailable : ConfigurationSteps.DatabaseNotAvailable; } connection.Close(); } return result; }
public Information Duplicate() { Information result = new Information() { databaseAuthentication = databaseAuthentication, databaseName = databaseName, password = password, serverAddress = serverAddress, serverConnectionConfiguration = serverConnectionConfiguration, serverInstanceName = serverInstanceName, sqlServerOption = sqlServerOption, status = status, userName = userName }; return result; }