/// <summary> /// Determines if the specified databases already exists. /// </summary> /// <param name="info">Information describing the datbase to inspect.</param> /// <returns>Returns <c>true</c> if database exists, otherwise <c>false</c>.</returns> public static bool DatabaseExists(DatabaseInfo info) { using (var database = new DatabaseManipulator(info)) { return database.Exists(); } }
private ServiceResponse CreateDatabase(DatabaseInfo info, string databaseUserNamePublic, string databasePasswordPublic, string scriptResourceName, IEnumerable<string> scriptResourceNames, ScriptLoader scriptLoader, DatabaseCredentials creatorCredentials) { var creatorInfo = info.CloneWithNewCredentials(creatorCredentials); using (var database = new DatabaseManipulator(creatorInfo)) { try { smo.Server sqlServer = database.SqlServer; // Make sure SQL Server allows SQL logins if needed if (creatorInfo.HasUserName()) { if (database.LoginMode == smo.ServerLoginMode.Integrated) { _logger.Error("Database Server is not configured for mixed-mode authentication.", "Database Server", creatorInfo.ServerName); _response.AddError(string.Format(CultureInfo.InvariantCulture, "Database Server ({0}) is not configured for mixed-mode authentication.", creatorInfo.ServerName)); } } if (!_response.HasErrors) { if (!database.Exists()) { _logger.Info("Creating database.", "Database name", info.DatabaseName, "Database Server", info.ServerName); // Create new database var newDatabase = new smo.Database(sqlServer, info.DatabaseName); newDatabase.Create(); database.CreateLogin(info.UserName, info.Password, true); database.CreateLogin(databaseUserNamePublic, databasePasswordPublic, false); // I don't know why we have to dispose this here, but I was afraid to remove it database.Dispose(); UpdateDatabaseSchema(info, databaseUserNamePublic, scriptResourceName, scriptResourceNames, scriptLoader); _logger.Info("Database created successfully.", info.GenerateCustomLoggingProperties()); } else { _logger.Error("Database already exists.", info.GenerateCustomLoggingProperties()); _response.AddError(string.Format(CultureInfo.InvariantCulture, "Database ({0}) on server ({1}) already exists.", info.DatabaseName, info.ServerName)); } } } catch (Exception ex) { _logger.Error("Creation of Database failed.", ex, info.GenerateCustomLoggingProperties()); _response.AddError(string.Format(CultureInfo.InvariantCulture, "Creation of Database ({0}) on server ({1}) failed: {2}", info.DatabaseName, info.ServerName, ex.Message)); } } return _response; }
public ServiceResponse DestroyDatabase(DatabaseInfo info, DatabaseCredentials destroyerCredentials, string databaseUserNamePublic) { var creatorInfo = info.CloneWithNewCredentials(destroyerCredentials); using (var database = new DatabaseManipulator(creatorInfo)) { try { if (database.Exists()) { _logger.Info("Destroying database.", info.GenerateCustomLoggingProperties()); database.Destroy(); database.RemoveLogin(); database.RemoveLogin(databaseUserNamePublic); _logger.Info("Database destroyed successfully.", info.GenerateCustomLoggingProperties()); } else { _logger.Info("Database does not exist.", info.GenerateCustomLoggingProperties()); _response.AddInfo("Database ({0}) on server ({1}) does not exist.", info.DatabaseName, info.ServerName); } } catch (Exception ex) { _logger.Error("Destruction of database failed.", ex, info.GenerateCustomLoggingProperties()); _response.AddError("Destruction of database ({0}) on server ({1}) failed.", info.DatabaseName, info.ServerName); } } return _response; }