在软件开发过程中,将应用程序从一个环境(如开发环境)迁移到另一个环境(如测试或生产环境)是一项常见的任务。这个过程不仅涉及到应用程序代码的迁移,还涉及到数据库的迁移。本文将介绍如何在SQL Server中使用BACPAC和DACPAC文件来迁移和部署数据库,以及如何通过SQL Server Management Studio导出这些文件。
许多开发者可能不知道SQL Server Management Studio提供了DACPAC和BACPAC的导出选项。本文将介绍SQL Server中的数据层应用程序(Data-tier Application)的概念,以及如何使用导出选项来创建BACPAC文件。此外,本文还将讨论数据库创建和恢复选项,包括数据备份文件恢复、生成带数据的脚本以及数据层应用程序。
在SQL Server中,可以通过创建目标数据库的.bak文件并将其恢复到新环境中来恢复数据库,包括数据。但是,当为同一个数据库创建BACPAC和.bak文件时,BACPAC文件的大小明显小于.bak文件。此外,BACPAC文件的创建和恢复/导入时间也相对较短。有时,由于大型数据库的重量级大小,.bak文件的文件传输可能会出现问题,还可能出现SQL Server版本兼容性问题。
另一种恢复或创建数据库的方法是生成带数据或不带数据的脚本,并运行它以创建新数据库。在SQL Server中生成脚本时,需要选择“高级”选项来选择模式和数据,以创建包含源数据库最新数据的新数据库。此外,如果使用它创建新数据库,执行脚本并插入所有数据需要很长时间。有时,数据插入可能会出现错误。除此之外,文件的大小也会变得很大。
在数据层应用程序中,有两种方法可以恢复数据库,使用不同的文件扩展名:DACPAC和BACPAC。
DACPAC(数据层应用程序包)是一个逻辑数据库实体,定义了数据库对象,例如表、视图、用户和登录名。它有助于为开发人员和数据库管理员创建一个包含数据库对象的单一包文件。
BACPAC(备份包)包含SQL Server数据库的模式和数据。可以生成这些文件并在多个环境中部署它们。此外,可以使用它将数据从一个环境迁移到另一个环境,例如从本地/现场迁移到Azure SQL数据库或在线。如果只需要模式,可以选择DACPAC方法。如果需要模式和数据,那么可以选择BACPAC方法。
它没有版本兼容性问题。它有助于将数据从不同源迁移到具有不同SQL版本的不同目标。它优于基于脚本的做法和.bak文件,因为它可以处理从旧版本到新版本的恢复或迁移。
在升级过程中,如果可能存在任何数据丢失,它会发出警告并提供升级计划。根据计划,数据库管理员或开发人员可以继续进行。
它压缩数据,因此文件大小变得更小。
步骤1:打开SSMS并连接到SQL实例。在SQL实例下展开数据库,右键单击要导出数据的数据库。然后,将看到以下选项:
在这里,可以看到三个选项:
由于本文讨论的是BACPAC,因此单击“导出数据层应用程序”。将看到以下窗口,单击“下一步”以继续。
步骤2:单击“浏览”并选择要保存文件的位置,并给出文件名。然后,按照下图所示单击“下一步”:
步骤3:将出现摘要窗口,如下所示,可以在其中看到源和目标位置的详细信息。单击“完成”以继续。
步骤4:它开始导出数据库模式、数据、存储过程和视图等。这可能需要几秒钟到几分钟。等待此过程完成。
导出过程完成后,可以关闭窗口并查看文件。现在,导出已完成,可以根据需要将此文件导入Azure SQL或另一台服务器或任何机器的SQL Server。