将数据库注册为 DAC

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例

使用注册数据层应用程序向导或Windows PowerShell脚本 (描述现有数据库中对象的 DAC) 定义生成数据层应用程序,并在Azure SQL数据库) 中的系统数据库 (master注册 DAC 定义msdb

开始之前

注册过程将创建用于定义数据库中的对象的 DAC 定义。 DAC 定义与 DAC 实例中的数据库的组合。 如果在数据库引擎的实例上将数据库注册为 DAC,则在下次将实用工具收集组从该实例发送到实用工具控制点时,已注册的 DAC 将合并到 SQL Server 实用工具中。 然后,该 DAC 将出现在 Management Studio 实用工具资源管理器的“已部署的数据层应用程序”节点中,并且将在“已部署的数据层应用程序”的详细信息页面中报告 。

限制和局限

DAC 注册只能在 SQL 数据库 或 SQL Server 2005 (9.x) Service Pack 4 (SP4) 或更高版本的数据库上执行。 如果已为数据库注册 DAC,则无法执行 DAC 注册。 例如,如果数据库是通过部署 DAC 创建的,则无法运行 注册数据层应用程序向导

如果数据库具有 DAC 不支持的对象或包含的用户,则无法注册 DAC。 有关 DAC 中支持的对象类型的详细信息,请参阅 DAC Support For SQL Server Objects and Versions

权限

在数据库引擎实例中注册 DAC 至少需要 ALTER ANY 登录和数据库范围 VIEW DEFINITION 权限、SELECT 权限 sys.sql_expression_dependencies,以及 dbcreator 固定服务器角色的成员身份。 sysadmin 固定服务器角色的成员或名为 sa 的内置 SQL Server 系统管理员帐户也可以注册 DAC。 在 SQL 数据库 中注册不包含登录名的 DAC 需要 dbmanagerserveradmin 角色的成员身份。 在 SQL 数据库 中注册包含登录名的 DAC 需要 loginmanagerserveradmin 角色的成员身份。

使用注册数据层应用程序向导

使用向导注册 DAC

  1. “对象资源管理器” 中,展开包含要注册为 DAC 的数据库的实例的节点。

  2. 展开 “数据库” 节点。

  3. 右键单击要注册的数据库,指向“任务”,然后选择“注册为数据层应用程序...”

  4. 完成向导对话框:

    1. “简介”页

    2. “设置属性”页

    3. “验证和摘要”页

    4. “注册 DAC”页

“简介”页

此页描述用于注册数据层应用程序的各个步骤。

不再显示此页。 - 选择检查框以阻止页面在将来显示。

下 > - 转到“ 设置属性” 页。

“取消”- 终止向导而不注册 DAC。

使用注册数据层应用程序向导

“设置属性”页

使用此页可指定 DAC 级别的属性,如应用程序名称和版本。

应用程序名称。 - 一个字符串,指定用于标识 DAC 定义的名称,字段已填充数据库名称。

版本。 - 标识 DAC 版本的数值。 该 DAC 版本用于 Visual Studio 中,以便标识开发人员正在处理的 DAC 的版本。 部署 DAC 时,版本存储在msdb数据库中,以后可以在 SQL Server Management Studio 的“数据层应用程序”节点下查看。

说明。 - 可选。 用来说明 DAC 用途的文本。 部署 DAC 时,说明存储在 msdb 数据库中,以后可以在 Management Studio 的 “数据层应用程序” 节点下查看。

< 上一页 - 返回到 “简介 ”页。

下 > - 验证是否可以从数据库中的对象生成 DAC,并在 “验证和摘要 ”页中显示结果。

“取消”- 终止向导而不注册 DAC。

使用注册数据层应用程序向导

“验证和摘要”页

使用此页可以查看向导在注册 DAC 时执行的操作。 当该页验证可从数据库的对象中生成 DAC 时,它将经历三个状态。

使用注册数据层应用程序向导

检索对象

检索数据库和服务器对象。 - 当该向导从数据库和数据库引擎实例中检索所有所需对象时,将显示一个进度栏。

< 上一页 - 返回到 “设置属性” 页以更改条目。

下 > - 注册 DAC 并在“ 注册 DAC ”页中显示结果。

“取消”- 终止向导而不注册 DAC。

使用注册数据层应用程序向导

验证对象

检查SchemaNameObjectName - 显示进度栏,因为向导将验证检索到的对象的依赖项,并验证它们是否都是 DAC 的有效对象。 SchemaName.ObjectName 确定当前正在验证的对象。

< 上一页 - 返回到 “设置属性” 页以更改条目。

下 > - 注册 DAC 并在“ 注册 DAC ”页中显示结果。

“取消”- 终止向导而不注册 DAC。

使用注册数据层应用程序向导

总结

将使用以下设置注册 DAC。 - 显示 DAC 中包含的属性和对象的报表。

“保存报表”- 选择此按钮可以将验证报表的副本保存到某一 HTML 文件。 默认文件夹是你 Windows 帐户的 Documents 文件夹中的 SQL Server Management Studio\DAC Packages 文件夹。

< 上一页 - 返回到 “设置属性” 页以更改条目。

下 > - 注册 DAC 并在“ 注册 DAC ”页中显示结果。

“取消”- 终止向导而不注册 DAC。

使用注册数据层应用程序向导

“注册 DAC”页

此页报告注册成功与否。

“注册 DAC”- 报告为注册 DAC 而执行的每个操作成功与否。 查看信息以便确定每个操作是成功还是失败。 遇到错误的任何操作在 “结果 ”列中都有一个链接。 选择该链接可以查看针对该操作的错误报告。

“保存报表”- 选择此按钮可以将注册报表保存到某一 HTML 文件。 该文件报告每个操作的状态,并且包括任何操作生成的所有错误。 默认文件夹是你 Windows 帐户的 Documents 文件夹中的 SQL Server Management Studio\DAC Packages 文件夹。 文件名的格式 <为 DACPackageName>_RegisterDACReport_yyyymmdd.html,其中 <DACPackageName> 是正在部署的包的名称, yyyy = 当前年份, mm = 当前月份, dd = 当前日期。

“完成” - 终止向导。

使用注册数据层应用程序向导

使用 PowerShell 注册 DAC

在 PowerShell 脚本中使用 Register() 方法将数据库注册为 DAC

  1. 创建一个 SMO Server 对象,并且将该对象设置为包含要注册为 DAC 的数据库的实例。

  2. 添加一个指定数据库名称的变量。

  3. 指定 DAC 的元数据,如 DAC 名称、版本和说明。

  4. 使用上面指定的信息运行 Register 方法。

示例 (PowerShell)

下面的示例将名为 MyDB 的数据库注册为 DAC。

## Set a SMO Server object to the default instance on the local computer.
CD SQLSERVER:\SQL\localhost\DEFAULT
$srv = get-item .
  
## Specify the database to register as a DAC.
$dbname = "MyDB"
  
## Specify the DAC metadata.
$applicationname = "MyApplication"
$version = "1.0.0.0"
$description = "This DAC defines the database used by my application."
  
## Register the DAC.
$registerunit = New-Object Microsoft.SqlServer.Management.Dac.DacExtractionUnit($srv, $dbname, $applicationname, $version)
$registerunit.Description = $description
$registerunit.Register()

另请参阅