513
514
515
516
517
518
519
520
521
522
523
524
525
526
|
# File 'lib/sql_cmd/database.rb', line 513
def duplicate(start_time, source_connection_string, source_database_name, destination_connection_string, destination_database_name, backup_folder: nil, backup_url: nil, backup_basename: nil, force_restore: false, full_backup_method: nil, options: {})
start_time = SqlCmd.unify_start_time(start_time)
backup(start_time, source_connection_string, source_database_name, backup_folder: backup_folder, backup_url: backup_url, backup_basename: backup_basename, options: options) unless info(source_connection_string, source_database_name)['DatabaseNotFound']
backup_folder, backup_basename = SqlCmd.backup_location_and_basename(start_time, source_connection_string, source_database_name, options, backup_folder: backup_folder, backup_url: backup_url, backup_basename: backup_basename)
if (backup_folder.nil? && backup_url.nil?) || backup_basename.nil?
source_server = SqlCmd.connection_string_part(source_connection_string, :server)
destination_server = SqlCmd.connection_string_part(destination_connection_string, :server)
database_info = SqlCmd::Database.info(destination_connection_string, destination_database_name)
raise "Backup files could not be found while duplicating #{source_database_name} from #{source_server} to #{destination_server}. Manually restore the database and run again." if database_info['LastRestoreDate'].nil? || database_info['LastRestoreDate'] < start_time
EasyIO.logger.warn 'Backup files could not be found but restore appears to be current. Skipping restore...'
return
end
restore(start_time, destination_connection_string, destination_database_name, backup_folder: backup_folder, backup_url: backup_url, backup_basename: backup_basename, force_restore: force_restore, full_backup_method: full_backup_method, options: options)
end
|