更新时间:2024-09-05 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的存储过程进行数据库备份。