更新时间:2024-01-09 GMT+08:00

数据库复制

操作场景

使用存储过程,备份某个数据库,并恢复成一个新的数据库。

前提条件

  • 成功连接RDS for SQL Server实例。关于连接华为云关系型数据库实例,请参考连接实例
  • 执行此存储过程的必须是拥有[CREATE ANY DATABASE]权限的用户。如果不具备此权限的用户尝试执行该存储过程,系统将会如下提示:
    Database restores can only be performed by database logins with [CREATE ANY DATABASE] permissions.
  • 对自定义数据库进行备份,执行账户必须是该数据库的“db_owner”或“db_backupoperator”角色组成员。如不具备相应权限的用户对数据库进行备份,系统将会有如下提示:
    Database backups can only be performed by members of db_owner or db_backupoperator roles in the source database

约束

  • 对于系统库,不可通过此存储过程进行复制操作。如果您试图复制系统库,系统将会如下提示:
    Error DBName_Source or DBName_Target. Please can not include in ('msdb','master','model','tempdb','rdsadmin','resource') .
  • 对于需要恢复的目标数据库,必须是不存在的,且不与源数据库同名的数据库,否则,系统将会如下提示:
    Database 数据库名 already exists. Cannot restore database with the same name.

操作步骤

执行以下命令,进行数据库复制。

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

  • @ DBName_Source:源数据库,指定要备份的数据库名。
  • @ DBName_Target:目标数据库,指定要恢复的数据库名。

将数据库testDB_1复制出一个新的数据库testDB_2,示例如下:

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

  • 数据库版本为RDS for SQL Server 2012(标准版、企业版、Web版)的用户,请使用名称为msdb.dbo.rds_copy_database_2012的存储过程进行数据库备份。
  • 数据库版本为RDS for SQL Server 2016(标准版、企业版、Web版)的用户,请使用名称为msdb.dbo.rds_copy_database_2016的存储过程进行数据库备份。
  • 数据库版本为RDS for SQL Server 2017企业版的用户,请使用名称为msdb.dbo.rds_copy_database_2017的存储过程进行数据库备份。