GetDatabaseServerName() public static method

public static GetDatabaseServerName ( System.Data.SqlClient.SqlConnectionStringBuilder connectionStringBuilder ) : string
connectionStringBuilder System.Data.SqlClient.SqlConnectionStringBuilder
return string
コード例 #1
0
        public override void ExecuteCommand()
        {
            if (!String.IsNullOrEmpty(DatabaseName))
            {
                ConnectionString.InitialCatalog = DatabaseName;
            }
            Log.Info("Exporting {0} on {1} to {2}", ConnectionString.InitialCatalog, Util.GetDatabaseServerName(ConnectionString), DestinationStorage.Credentials.AccountName);

            string serverName = ConnectionString.DataSource;

            if (serverName.StartsWith("tcp:"))
            {
                serverName = serverName.Substring(4);
            }

            WASDImportExport.ImportExportHelper helper = new WASDImportExport.ImportExportHelper(Log)
            {
                EndPointUri  = SqlDacEndpoint.AbsoluteUri,
                DatabaseName = ConnectionString.InitialCatalog,
                ServerName   = serverName,
                UserName     = ConnectionString.UserID,
                Password     = ConnectionString.Password,
                StorageKey   = Convert.ToBase64String(DestinationStorage.Credentials.ExportKey())
            };

            // Prep the blob
            string blobUrl = null;

            if (!WhatIf)
            {
                var client    = DestinationStorage.CreateCloudBlobClient();
                var container = client.GetContainerReference(DestinationContainer);
                container.CreateIfNotExists();
                var blob = container.GetBlockBlobReference(ConnectionString.InitialCatalog + ".bacpac");
                if (blob.Exists())
                {
                    Log.Info("Skipping export of {0} because the blob already exists", blob.Name);
                }
                else
                {
                    Log.Info("Starting export to {0}", blob.Uri.AbsoluteUri);

                    // Export!
                    blobUrl = helper.DoExport(blob.Uri.AbsoluteUri, WhatIf);
                }
            }

            Log.Info("Export Complete");
        }
コード例 #2
0
        public override void ExecuteCommand()
        {
            using (var destinationConnection = new SqlConnection(Util.GetMasterConnectionString(DestinationConnectionString.ConnectionString)))
                using (var destinationDbExecutor = new SqlExecutor(destinationConnection))
                {
                    string sourceDbServerName      = Util.GetDatabaseServerName(SourceConnectionString);
                    string destinationDbServerName = Util.GetDatabaseServerName(DestinationConnectionString);

                    destinationConnection.Open();

                    var copyDbName = $"CopyOf{BackupName}";

                    var existingDatabaseBackup = Util.GetDatabase(
                        destinationDbExecutor,
                        copyDbName);

                    if (existingDatabaseBackup != null && existingDatabaseBackup.State == Util.OnlineState)
                    {
                        Log.Info("Skipping {0}. It already exists on {1} and is online.", copyDbName, destinationDbServerName);
                        return;
                    }

                    if (existingDatabaseBackup == null)
                    {
                        StartBackupCopy(
                            destinationDbExecutor,
                            sourceDbServerName,
                            destinationDbServerName,
                            BackupName,
                            copyDbName);

                        Log.Trace("Waiting 15 minutes for copy of {0} from {1} to {2} to complete.", BackupName, sourceDbServerName, destinationDbServerName);
                        if (!WhatIf)
                        {
                            Thread.Sleep(15 * 60 * 1000);
                        }
                    }

                    WaitForBackupCopy(
                        destinationDbExecutor,
                        destinationDbServerName,
                        copyDbName);
                }
        }
コード例 #3
0
        public override void ExecuteCommand()
        {
            Log.Trace("Connecting to server '{0}' to back up database '{1}'.", ConnectionString.InitialCatalog, Util.GetDatabaseServerName(ConnectionString));

            _startedBackup = false;

            var cstr = Util.GetMasterConnectionString(ConnectionString.ConnectionString);

            using (var connection = new SqlConnection(cstr))
                using (var db = new SqlExecutor(connection))
                {
                    connection.Open();

                    if (!Force)
                    {
                        Log.Trace("Checking for a backup in progress.");
                        if (Util.BackupIsInProgress(db, BackupNamePrefix))
                        {
                            Log.Trace("Found a backup in progress; exiting.");
                            return;
                        }

                        Log.Trace("Found no backup in progress.");

                        Log.Trace("Getting last backup time.");
                        var lastBackupTime = Util.GetLastBackupTime(db, BackupNamePrefix);
                        if (lastBackupTime >= DateTime.UtcNow.Subtract(TimeSpan.FromMinutes(IfOlderThan)))
                        {
                            Log.Info("Skipping Backup. Last Backup was less than {0} minutes ago", IfOlderThan);
                            return;
                        }
                        Log.Trace("Last backup time is more than {0} minutes ago. Starting new backup.", IfOlderThan);
                    }
                    else
                    {
                        Log.Trace("Forcing new backup");
                    }

                    // Generate a backup name
                    var timestamp = Util.GetTimestamp();

                    _backupName = BackupNamePrefix + timestamp;

                    if (!WhatIf)
                    {
                        db.Execute(string.Format("CREATE DATABASE {0} AS COPY OF {1}", _backupName, ConnectionString.InitialCatalog));
                        _startedBackup = true;
                    }

                    Log.Info("Started Copy of '{0}' to '{1}'", ConnectionString.InitialCatalog, _backupName);
                }
        }