我需要备份 Azure 托管实例中存在的 SQL 数据库,并将其还原到本地服务器上以进行根本原因分析。每当我们在数据库上遇到某个错误时,都需要执行此操作。由于自动备份已启用 TDE,因此有哪些可用选项可用于在本地计算机上还原数据库?
浏览后,我遇到了两个选项,但需要一些指导。
一种选择是禁用数据库上的 TDE,备份数据库,然后启用 TDE。但是在此选项中,备份文件不会是加密格式,并且由于我们拥有机密数据,因此这似乎不是一个安全的解决方案。我们是否有任何选项可以使用自己的加密来备份数据库并使用这些加密在本地计算机上还原?
获取数据的第二个选项是使用 BACPAC 文件。但他们也再次遭受同样的安全问题。我们可以在创建时加密 bacpac 文件,并在加载到本地服务器时解密它们吗?
请告知是否有任何其他选择。
重要的考虑因素是,你将无法使用二进制备份("备份数据库"命令(将数据库从任何 SQL Azure 产品/服务(包括托管实例(传输到本地。 原因是 Azure SQL 数据库中的软件会不断更新,因此在 Azure SQL 数据库(或托管实例(中运行的版本将始终领先于本地运行的版本。
因此,虽然可以在托管实例中物理创建备份文件,并将其还原到同一或另一个托管实例,但如果将其传输到本地,则在 SQL 的本地版本赶上用于创建备份的软件之前,将无法还原它。因此,障碍不仅仅是TDE问题。
综上所述,您最好的选择是使用 bacpac 代替。可以创建 Azure SQL 数据库的 bacpac 并将其存储在本地计算机上。默认情况下,Azure 内部或外部的所有信息都经过加密。
SqlPackage /Action:Export /SourceServerName:SampleSQLServer.sample.net,1433 /SourceDatabaseName:SampleDatabase /TargetFile:"F:TempSampleDatabase.bacpac"