【发布时间】:2016-08-29 23:18:05
【问题描述】:
长话短说,我如何才能将数据库返回到它从未有任何主密钥、证书等的点?
当前加密的数据是测试数据,所以我不需要保留它。
我分离了数据库并将其移至未来的生产服务器,但没有做我应该做的所有事情来让它工作。
这是我尝试过的方法和结果:
- 从旧服务器备份现有主密钥并恢复到新服务器 -原来我丢失了密码。所以我又加了一个。 -备份没问题 - 无法将文件复制到 google 驱动器(这是我将东西传送到服务器的唯一方法),也无法移动文件,甚至无法通过电子邮件发送或打开它,收到我没有权限的消息。尝试了 3 种不同的备份。
状态:废弃
- 在生产主密钥、新证书、新对称密钥上创建新密码。来源:https://mattsql.wordpress.com/2012/11/13/migrating-sql-server-databases-that-use-database-master-keys/ -失败 - 不记得错误。
状态:废弃
- 重新生成密钥 -ALTER 主密钥通过密码加密重新生成 - 似乎不起作用,不记得确切的错误。
状态:废弃
- 删除所有内容,阅读所有内容 -每https://sqlsailor.com/2012/01/03/drop-master-key-understanding-encryption-hierarchy/
DROP DATABASE ENCRYPTION KEY
DROP CERTIFICATE TDECertificate
DROP MASTER KEY
状态:在家用机器上工作,能够让一切正常运行,但那是原始设置的机器,因此它没有以目前的生产方式损坏。计划今晚在生产中试用这个(我每晚只能远程工作大约一个小时)
在主密钥和加密方面,我还需要做些什么才能将其恢复到开箱即用的状态吗?我是否也需要重新生成服务主密钥(我想我可以做到)
【问题讨论】:
-
我总是从 T-SQL 脚本构建一个数据库,我将其置于源代码控制之下。要在生产服务器上安装数据库,我会使用脚本创建它以确保获得全新安装。
-
我不会争辩。我希望我已经做到了,但现在我可能会被困在试图解决当前问题而不是删除数据库并重新开始。例如,我的数据库备份脚本是在添加加密之后完成的,所以据我所知,这会让我回到同样的问题。
-
您的家用计算机上还有工作副本吗?如果是这样,您应该能够使用 SSMS 为数据库中的每个对象生成脚本,然后根据需要进行检查和编辑。给出一个想法,有多少张桌子等?
-
哦,我想只有 10 张桌子。可能有 30 个存储过程。
标签: sql-server encryption