コード例 #1
0
        public void DropDatabaseIfExist()
        {
            var    connectoinStringBuilder = new SqlConnectionStringBuilder(ConnectionString);
            string dbName = connectoinStringBuilder.InitialCatalog;

            connectoinStringBuilder.InitialCatalog = string.Empty;

            using (var connection = new SqlConnection(connectoinStringBuilder.ToString()))
            {
                try
                {
                    var serverConnection = new ServerConnection(connection);
                    var server           = new Microsoft.SqlServer.Management.Smo.Server(serverConnection);
                    if (server.Databases.Contains(dbName))
                    {
                        server.KillDatabase(dbName);
                    }
                }
                finally
                {
                    if (connection.State == ConnectionState.Open)
                    {
                        connection.Close();
                    }
                }
            }
        }
コード例 #2
0
        private void DeleteTestDatabase()
        {
            var connectionString = ConfigurationManager.ConnectionStrings["Test"].ConnectionString;

            using (var sqlConnection = new SqlConnection(connectionString))
            {
                var serverConnection = new smoCommon.ServerConnection(sqlConnection);
                var server = new smoManagement.Server(serverConnection);

                if(server.Databases.Contains("StoreSpike_TEST"))
                    server.KillDatabase("StoreSpike_TEST");
            }
        }
コード例 #3
0
 public static void DropDatabase(string connectionName)
 {
     using (
         var sqlConnection =
             new SqlConnection(
                 ConfigurationManager.ConnectionStrings[connectionName]
                 .ConnectionString))
     {
         var serverConnection = new ServerConnection(sqlConnection);
         var server           = new Microsoft.SqlServer.Management.Smo.Server(
             serverConnection);
         server.KillDatabase(sqlConnection.Database);
     }
 }
コード例 #4
0
ファイル: DbInitializer.cs プロジェクト: Drake103/ewg
        public void DropDatabaseIfExist()
        {
            var connectoinStringBuilder = new SqlConnectionStringBuilder(ConnectionString);
            string dbName = connectoinStringBuilder.InitialCatalog;
            connectoinStringBuilder.InitialCatalog = string.Empty;

            using (var connection = new SqlConnection(connectoinStringBuilder.ToString()))
            {
                try
                {
                    var serverConnection = new ServerConnection(connection);
                    var server = new Microsoft.SqlServer.Management.Smo.Server(serverConnection);
                    if (server.Databases.Contains(dbName))
                    {
                        server.KillDatabase(dbName);
                    }
                }
                finally
                {
                    if (connection.State == ConnectionState.Open)
                        connection.Close();
                }
            }
        }
コード例 #5
0
        protected override void DoWork(object state)
        {
            var mainCancellationTokenSource = new CancellationToken();

            try
            {
                var tasks          = new List <Task>();
                var deploymentJobs = _deploymentJobService.Get(p => p.Server.Code == ServerId &&
                                                               p.JobType == (int)JobType.Database &&
                                                               (p.IsCopySourceDone ?? false) &&
                                                               (p.IsStart ?? false) &&
                                                               !(p.IsDone ?? false))
                                     .OrderBy(p => p.FailCount)
                                     .Take(2).ToList();

                var listJobUpdated = new List <DeploymentJob>();

                foreach (var job in deploymentJobs)
                {
                    var localJob = job;
                    var t        = Task.Factory.StartNew(() =>
                    {
                        var dbName        = localJob.Configuration.DatabaseName;
                        var loginName     = localJob.Configuration.DatabaseUsername;
                        var loginPassword = EncryptHelper.Decrypt(localJob.Configuration.DatabasePassword);
                        var pass          = PasswordHelper.HashString("123456", "camino");

                        var conn   = new SqlConnection(ConfigurationManager.ConnectionStrings["MainDb"].ConnectionString);
                        var file   = new FileInfo(localJob.Configuration.SqlScriptPath);
                        var script = file.OpenText().ReadToEnd();
                        script     = script.Replace("{{DATABASE_NAME}}", dbName)
                                     .Replace("{{FRANCHISEE_ADMIN_NAME}}", "camino")
                                     .Replace("{{FRANCHISEE_ADMIN_PASSWORD}}", pass)
                                     .Replace("{{FRANCHISEE_ADMIN_EMAIL}}", "*****@*****.**");


                        var server = new Server(new ServerConnection(conn));

                        try
                        {
                            server.ConnectionContext.ExecuteNonQuery(script);
                            using (var scope = new TransactionScope())
                            {
                                var db    = server.Databases[dbName];
                                var login = server.Logins[loginName];
                                if (login == null)
                                {
                                    // Creating Logins
                                    login = new Login(server, loginName)
                                    {
                                        LoginType = LoginType.SqlLogin, PasswordPolicyEnforced = false
                                    };
                                    login.Create(loginPassword);
                                    login.DefaultDatabase = dbName;
                                    login.Alter();
                                }

                                // Creating Users in the database for the logins created
                                if (db.Users[loginName] != null)
                                {
                                    return;
                                }
                                var dbUser = new User(db, loginName)
                                {
                                    UserType = UserType.SqlLogin,
                                    Login    = login.Name,
                                };
                                dbUser.Create();
                                dbUser.AddToRole("db_owner");

                                localJob.IsDone = true;
                                scope.Complete();
                            }
                        }
                        catch (Exception exception)
                        {
                            server = new Server(new ServerConnection(conn));
                            server.KillAllProcesses(dbName);
                            server.KillDatabase(dbName);
                            var db = server.Databases[dbName];
                            db.Drop();
                            localJob.IsDone    = false;
                            localJob.FailCount = (localJob.FailCount ?? 0) + 1;
                            _diagnosticService.Error(exception);
                        }

                        listJobUpdated.Add(localJob);
                    }, mainCancellationTokenSource);

                    tasks.Add(t);
                }

                Task.WaitAll(tasks.ToArray(), mainCancellationTokenSource);
                _deploymentJobService.UpdateListJobs(listJobUpdated);
            }
            catch (Exception ex)
            {
                _diagnosticService.Error(ex);
            }
        }