Updated on 2023-08-09 GMT+08:00

Replicating Databases

Scenarios

You can use a stored procedure to back up a database and restore it to a new database.

Prerequisites

  • An RDS for SQL Server DB instance has been connected. For details about how to connect to a DB instance, see Connecting to a DB Instance Through a Public Network.
  • The stored procedure must be executed by a user who has the [CREATE ANY DATABASE] permission. If a user who does not have this permission attempts to execute the stored procedure, the system displays the following information:
    Database restores can only be performed by database logins with [CREATE ANY DATABASE] permissions.
  • To back up a custom database, the execution account must be a member of the db_owner or db_backupoperator role group in the database. If a user who does not have the corresponding permission attempts to execute the stored procedure, the system displays the following information:
    Database backups can only be performed by members of db_owner or db_backupoperator roles in the source database

Constraints

  • You cannot replicate the system databases. If you attempt to replicate a system database, the system displays the following information:
    Error DBName_Source or DBName_Target. Please can not include in ('msdb','master','model','tempdb','rdsadmin','resource') .
  • The target database to be restored to cannot have the same database name as the source database. Otherwise, the system displays the following information:
    Database database name already exists. Cannot restore database with the same name.

Procedure

Run the following command to replicate a database:

EXEC msdb.dbo.rds_copy_database '@DBName_Source', '@DBName_Target';

  • @DBName_Source: indicates the source database to be backed up.
  • @DBName_Target: indicates the target database to be restored to.

For example, to replicate database testDB_1 to obtain a new database testDB_2, run the following command:

EXEC msdb.dbo.rds_copy_database 'testDB_1', 'testDB_2';

  • If the database version is RDS for SQL Server 2012 (Standard Edition, Enterprise Edition, or Web Edition), use the stored procedure msdb.dbo.rds_copy_database_2012 to back up the database.
  • If the database version is RDS for SQL Server 2016 (Standard Edition, Enterprise Edition, or Web Edition), use the stored procedure msdb.dbo.rds_copy_database_2016 to back up the database.
  • If the database version is RDS for SQL Server 2017 Enterprise Edition, use the stored procedure msdb.dbo.rds_copy_database_2017 to back up the database.