云服务器内容精选

  • 操作步骤 执行以下命令,进行数据库复制。 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的存储过程进行数据库备份。
  • 前提条件 成功连接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
  • 操作步骤 执行以下命令,进行跟踪标记。 EXEC msdb.dbo.rds_dbcc_trace @Trace_Flag, @Trace_Action; @ Trace_Flag:指定跟踪标记序号,当前仅支持 1117, 1118, 1204, 1211, 1222, 1224, 3604。 @ Trace_Action:指定跟踪标记操作,1为打开跟踪标记,0为关闭跟踪标记,-1为查看跟踪标记。 打开跟踪标记1117,示例如下: EXEC msdb.dbo.rds_dbcc_trace 1117, 1;
  • 操作步骤 执行以下命令,进行限制子账户查看数据库权限。 EXEC rdsadmin.dbo.rds_AUTHORIZATION_DatabaseForLogin ‘@DBName’, ‘@Login’; @ DBName:要授予权限的数据库。 @ Login:要授予权限的账户。 为“user_1”账户授予数据库“testDB_1”的权限,示例如下: EXEC rdsadmin.dbo.rds_AUTHORIZATION_DatabaseForLogin ‘testDB_1’, ‘user_1’; 授权成功之后,user_1将具备testDB_1的权限,对其可见并可对其进行操作;并且对其余无权限数据库保持不可见且不可操作。
  • 收缩数据库 执行以下命令,进行数据库收缩。 EXEC [master].[dbo].[rds_shrink_database] @DBName='myDbName'; 表1 参数说明 参数 说明 myDbName 收缩指定数据库的数据库名称。如果未指定,默认收缩所有数据库。 执行成功后,系统会显示执行进度,并最终进行如下提示: HW_RDS_Process_Successful: Shrink Database Done.
  • 常见问题 如果执行存储过程发生报错,报错信息为“文件正在使用中”,则请稍后再执行存储过程。 如果执行存储过程后,日志文件大小未改变,请在目标数据库环境下,执行以下SQL,验证文件是否有足够的可用空间。 SELECT name, size/128.0 - CAST(FILEPROPERTY(name, 'SpaceUsed') AS int)/128.0 AS AvailableSpaceInMB FROM sys.database_files WHERE type_desc=' LOG ';
  • 示例 执行以下命令,对dbtest2数据库进行收缩。 EXEC [master].[dbo].[rds_shrink_database] @DBName = 'dbtest2'; 执行结果如下图所示: 执行以下命令,对所有数据库进行收缩。 EXEC [master].[dbo].[rds_shrink_database]; 执行以下命令,收缩数据库testdb的日志文件。 EXEC [master].[dbo].[rds_shrink_database_log]@dbname='dbtest3';