コード例 #1
0
        public bool ScriptAlreadyExecuted(ConnectionSettings settings, string scriptFilename)
        {
            if (_appliedScripts == null)
            {
                _appliedScripts =
                    _executor.ReadFirstColumnAsStringArray(settings, "select ScriptFile from usd_AppliedDatabaseScript");
            }

            bool alreadyExecuted = Array.IndexOf(_appliedScripts, scriptFilename) >= 0;

            return(alreadyExecuted);
        }
コード例 #2
0
        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));
            }
        }
コード例 #3
0
        public void CorrectlyDeterminesWhenScriptHasNotBeenExecuted()
        {
            ConnectionSettings settings       = new ConnectionSettings(string.Empty, string.Empty, false, string.Empty, string.Empty);
            string             scriptFilename = "03_Test.sql";

            string[] executedScriptFiles = new string[] { "01_Test.sql", "02_Test.sql" };

            MockRepository mocks         = new MockRepository();
            IQueryExecutor queryExecutor = mocks.CreateMock <IQueryExecutor>();

            Expect.Call(queryExecutor.ReadFirstColumnAsStringArray(settings, "select ScriptFile from usd_AppliedDatabaseScript")).Return(executedScriptFiles);

            mocks.ReplayAll();

            IScriptExecutionTracker tracker = new ScriptExecutionTracker(queryExecutor);
            bool alreadyExecuted            = tracker.ScriptAlreadyExecuted(settings, scriptFilename);

            Assert.AreEqual(false, alreadyExecuted);

            mocks.VerifyAll();
        }