public void Execute(TaskAttributes taskAttributes, ITaskObserver taskObserver) { if (!_queryExecutor.CheckDatabaseExists(taskAttributes.ConnectionSettings)) { return; } var version = _queryExecutor.ReadFirstColumnAsStringArray(taskAttributes.ConnectionSettings, "select @@version")[0]; taskObserver.Log("Running against: " + version); //can't kill connections or enter single user mode in Azure var sql = string.Format("drop database [{0}]", taskAttributes.ConnectionSettings.Database); if (!version.Contains("SQL Azure")) { _connectionDropper.Drop(taskAttributes.ConnectionSettings, taskObserver); sql = string.Format("ALTER DATABASE [{0}] SET SINGLE_USER WITH ROLLBACK IMMEDIATE drop database [{0}]", taskAttributes.ConnectionSettings.Database); } string message = string.Format("Dropping database: {0}\n", taskAttributes.ConnectionSettings.Database); taskObserver.Log(message); try { _queryExecutor.ExecuteNonQuery(taskAttributes.ConnectionSettings, sql); } catch (Exception) { taskObserver.Log(string.Format("Database '{0}' could not be dropped.", taskAttributes.ConnectionSettings.Database)); } }
public void Execute(TaskAttributes taskAttributes, ITaskObserver taskObserver) { if (!_queryExecutor.CheckDatabaseExists(taskAttributes.ConnectionSettings)) { taskObserver.Log(string.Format("Database does not exist. Attempting to create database before updating.")); string sql = string.Format("create database [{0}]", taskAttributes.ConnectionSettings.Database); _queryExecutor.ExecuteNonQuery(taskAttributes.ConnectionSettings, sql); taskObserver.Log(string.Format("Run scripts in Create folder.")); _folderExecutor.ExecuteScriptsInFolder(taskAttributes, "Create", taskObserver); } taskObserver.Log(string.Format("Run scripts in Update folder.")); _folderExecutor.ExecuteScriptsInFolder(taskAttributes, "Update", taskObserver); taskObserver.Log(string.Format("Run scripts in Everytime folder.")); _folderExecutor.ExecuteChangedScriptsInFolder(taskAttributes, "Everytime", taskObserver); }
/// <summary> /// <para>Returns a boolean if the target database exists</para> /// </summary> /// <param name="connectionString"></param> /// <returns>Returns a boolean if the target database exists</returns> public bool DatabaseExists(string connectionString) { return(_queryExecutor.CheckDatabaseExists(_connectionStringGenerator.GetConnectionSettings(connectionString))); }