我正在尝试将 SQL 数据库复制到不同的订阅上,但目前陷入困境。
第一步是阅读链接这里
但我收到此错误:
消息 45137,第 16 级,状态 1,第 3 行
权限不足,无法在服务器“目标”上创建数据库副本。确保用户登录“db_copy_login”在源服务器和目标服务器上具有正确的权限。
尽管登录名
db_copy_login
是db_manager
角色的一部分,但登录名可以毫无问题地创建空数据库。
因为我在不同订阅但相同租户的 2 个数据库(源/目标)中拥有我的 Entra ID 的管理员权限。
我可以使用此处显示的代码:
CREATE DATABASE my_new_db AS COPY OF [source_sql_server].[source_sql_db]
然后我得到了这个错误:
消息 47603,第 16 级,状态 1,第 1 行
GeoDr 链接的所有服务器应具有与主服务器的加密保护程序相同的密钥材料。请将具有相同密钥材料的密钥“https://source-keyvault.vault.azure.net/keys/sql-tde/xxxxxxxxx”添加到辅助服务器“destination_sql_server”。 (https://aka.ms/sqltdebyokgeodr)
事实证明,您也无法跨订阅恢复加密密钥。
接下来我该做什么?
使用 SSMS 将数据库作为
.dacpac
导出到存储帐户以进行导入。
由于需要清理数据库,我遇到了各种各样的错误,例如,有些视图引用了不存在的表。这让我思考,我还能如何跨订阅复制加密数据库?
消息 47603,16 级,状态 1,第 1 行
GeoDr 链接的所有服务器应具有与主服务器的加密保护程序相同的密钥材料。请将具有相同密钥材料的密钥“https://source-keyvault.vault.azure.net/keys/sql-tde/xxxxxxxxx”添加到辅助服务器“destination_sql_server”..
正如错误所示,您的目标服务器必须启用TDE,因为目标服务器必须具有主服务器加密保护器的密钥材料。目标服务器和源服务器的所有标记值应该相同。
您还可以参考这个类似的SO Thread中回答的解决方法,以及将数据库与Azure SQL Server一起移动的方法。不仅仅是数据库本身。