实现数据层应用程序

数据层应用程序 (DAC) 定义支持某一应用程序所需的 SQL Server 数据库引擎架构和对象。DAC 可以通过下面两个过程之一来实现:

  • 可以使用 Microsoft Visual Studio 2010 中的 SQL Server 数据层应用程序项目创作和生成 DAC。

  • 可以使用 SQL Server Management Studio 中的“提取数据层应用程序向导”从现有数据库中提取 DAC。

提取和创作生成过程都产生用于指定对象和元数据的 DAC 定义。DAC 定义内置于 DAC 包中,DAC 包是一个文件,其中包含 DAC 中包括的所有对象和策略定义的清单。DAC 包可用于执行以下操作:

  • 将 DAC 的当前版本部署到数据库引擎和 SQL Azure 的开发、测试和生产实例中。使用“部署数据层应用程序向导”可以部署新的 DAC 实例。使用“升级数据层应用程序向导”可以升级使用该 DAC 的早期版本部署的现有 DAC 实例。

  • 通过将 DAC 导入到 Visual Studio 中新的 SQL Server 数据层应用程序项目,开始在 Visual Studio 中开发下一个 DAC 版本。

开发进程中的数据层应用程序

通过使用 Visual Studio 中的 DAC 项目来开发 DAC。DAC 项目可将数据层对象的开发与在代码中使用这些对象的应用程序的开发环境紧密集成。数据库开发人员通过使用 Visual Studio 中的 DAC 项目创作 DAC。DAC 项目可以集成到 Visual Studio Team System 中应用程序的总体开发解决方案中。在应用程序开发人员编写应用程序代码时,数据库开发人员为该 DAC 中的数据层对象定义编写代码。

对于新的应用程序,数据库开发人员先创建 DAC 项目,然后开始将对象添加到所开发的项目中。当启动项目以开发现有应用程序的新版本时,数据库开发人员可以从该应用程序使用的当前数据库中提取 DAC 包,并将其导入到 DAC 项目中。

开发人员可以将这些元素添加到 DAC 项目:

  • 定义 DAC 特征的 DAC 属性。例如,每个 DAC 都具有一个应用程序名称属性和一个版本属性,它们的值通常与关联的应用程序的名称和版本号相关。

  • 该应用程序使用的所有数据库对象(如架构、表、视图和存储过程)的定义。DAC 并不支持所有可用的 SQL Server 对象。有关详细信息,请参阅对 SQL Server 对象和版本的 DAC 支持

  • 与数据库对象关联并由应用程序使用的实例级对象(如登录名)的定义。

  • 服务器选择策略,用于定义数据库引擎实例承载该 DAC 必须具有的先决条件。策略是使用“服务器选择”方面定义的,可以评估诸如实例的版本和默认排序规则等条件。

  • 在 Visual Studio 中创作 DAC 时可嵌入其中的文件和脚本。例如,应用程序文档、指定如何创建有意义的测试数据的数据生成计划或预部署脚本和后期部署脚本。

出于测试目的,数据库开发人员可以将 DAC 项目部署到数据库引擎的测试实例。或者,开发人员可以生成 DAC 项目,以便在 DAC 包中创建 DAC 定义。DAC 定义包含在 DAC 项目中定义的所有元素的元数据。DAC 包是包含 DAC 定义的压缩 XML 文件,用于部署或升级 DAC。开发人员和测试人员可以使用“部署数据层应用程序向导”将 DAC 部署到其测试系统。

完成应用程序开发后,构建该 DAC 项目以创建 DAC 包的生产版本,如同构建应用程序项目来创建应用程序可执行文件一样。将 DAC 包传送给生产数据库管理员,由其负责将该包部署到在生产中运行的数据库引擎实例和 SQL Azure。

将 DAC 版本部署到生产后,可开始开发 DAC 的下一个版本。数据库开发人员使用所有数据层对象(因为它们存在于该版本中)的定义创建 DAC 项目的新版本。当将项目内置于新的 DAC 包中时,可以同时将该相同包用于部署 DAC 的新实例或将现有实例升级到新版本。“升级数据层应用程序向导”将现有 DAC 实例的架构与 DAC 包的架构进行比较,并动态执行将现有 DAC 实例转换到新版本的 DAC 所需的操作。

有关 Visual Studio 文档中 DAC 项目的详细信息,请参阅 Creating and Managing Data-tier Applications(创建和管理数据层应用程序)。

从数据库中提取 DAC

“提取数据层应用程序向导”用于基于现有数据库生成 DAC 定义。DAC 定义包含用于定义数据库中所有对象的元数据、任何映射到数据库中安全主体的登录名以及数据库排序规则和兼容性级别。DAC 定义不包含源数据库中的任何用户数据。DAC 定义内置于 DAC 包文件中。

该向导只能提取数据层应用程序支持的对象。指定诸如 DAC 名称和版本之类的属性后,向导从数据库加载所有对象,并验证 DAC 支持这些对象。然后,向导显示一个摘要页,在该页中按三种类别对这些对象进行分组:

  • DAC 中不支持具有红色无效项图标的对象。

  • 具有黄色警告图标的对象本身在 DAC 中受到支持,但它们与某个不支持的对象具有依赖关系。

  • 具有绿色成功图标的对象是 DAC 所支持的,且与 DAC 不支持的对象没有任何依赖关系。

如果该向导遇到 DAC 不支持的任何对象,它将在摘要报表中列出这些对象且不创建 DAC 包。如果所有对象都具有一个绿色成功图标,则可以继续创建 DAC 包。

提取的 DAC 包可用于执行以下操作:

  • 将该 DAC 导入 Visual Studio 中的 DAC 项目,数据库开发人员可在其中开始开发 DAC 的下一版本。

  • 部署该 DAC 的新实例。

  • 升级先前部署的 DAC 版本。

有关支持哪些对象的详细信息,请参阅对 SQL Server 对象和版本的 DAC 支持

有关如何启动该向导的详细信息,请参阅如何从数据库中提取 DAC

登录密码

为了提高安全性,SQL Server 身份验证登录名存储在 DAC 包中且没有任何密码。在部署或升级该包时,登录名将作为含有生成的密码的已禁用登录名创建。若要启用这些登录名,请使用具有 ALTER ANY LOGIN 权限的登录名登录,并且使用 ALTER LOGIN 来启用该登录名并且分配可以传达给用户的新密码。对于 Windows 身份验证登录名则无需执行此操作,因为其密码不是由 SQL Server 管理的。