1. 背景介绍
目前,迁移RDS SQL Server中的数据到其他RDS SQL Server时,使用DTS数据传输服务进行迁,无法将加密存储过程顺利迁出。加密的存储过程,无法script出其定义。
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIn5GcuczM0gDOmBTOhNmYklDM4UjZmNTM2czYzEGOkdDMyMzYvwVbvNmLj5Wat4Wd5lGbh5iY1BXLn1WauU3bop3ZuFGat42YucWbp1iMhRXYvw1LcpDc0RHaiojIsJye.png)
备注:
当您考虑加密数据库存储过程之前,建议先做一个备份。
2. 查看SQL Server中加密存储过程和函数的方法
1)在存储过程所在的数据库下,创建存储过程sp_decrypt (出自微软BI开拓者www.windbi.com)。
2) DAC连接SQL Server
确认SQL Server实例是否支持DAC连接:
sqlcmd方式连接实例 :
sqlcmd -A -S servername -E
3)切换到用户数据库
Use DBNAME
4)执行解密存储过程
sp_decrypt EncryptSP
Go
显示结果
3. 迁移RDS中的存储过程到本地自建库和其他RDS实例
RDS上面不支持DAC连接,需要把备份集下载到本地还原,然后使用2中的方法,导出加密存储过程的定义。
若是需要RDS之间迁移加密存储过程,RDS SQL Server 2008 R2之间可以还原备份集,其他版本的RDS SQL Server需要先将备份集还原到本地自建库,然后使用2中方法解密存储过程,再将存储过程定义导入目的RDS中。
RDS SQL Server 各个版本,可以在RDS控制台,备份恢复中下载备份集。