如何从数据库中提取 DAC

使用**“提取数据层应用程序向导”**或 Windows PowerShell 脚本可以从现有 SQL Server 数据库提取数据层应用程序 (DAC) 包。 提取过程将创建一个 DAC 包文件,其中包含数据库对象及其相关实例级别元素的定义。 例如,一个 DAC 包文件包含数据库表、存储过程、视图、用户以及映射到数据库用户的登录名。

您可以从驻留在 SQL Azure 或者 SQL Server 2005 Service Pack 4 (SP4) 或更高版本的实例上的数据库中提取 DAC。

**“提取数据层应用程序向导”**不注册当前数据库引擎实例中的 DAC 定义。 有关注册 DAC 的详细信息,请参阅如何将数据库注册为 DAC

使用 PowerShell 提取 DAC

生成和运行脚本

  1. 创建文件 ExtractDAC.ps1。

  2. 添加代码以便创建一个 SMO Server 对象,并且将该对象设置为包含您要从其提取 DAC 的数据库的实例。 该示例将服务器对象设置为本地计算机上的默认实例:

    ## Set a SMO Server object to the default instance on the local computer.
    CD SQLSERVER:\SQL\localhost\DEFAULT
    $srv = get-item .
    
  3. 添加代码以便指定该数据库。 此示例指定一个名为 MyDB 的数据库:

    ## Specify the database to extract to a DAC.
    $dbname = "MyDB"
    
  4. 为 DAC 指定元数据。 此示例指定 DAC 名称、版本和说明:

    ## Specify the DAC metadata.
    $applicationname = "MyApplication"
    $version = "1.0.0.0"
    $description = "This DAC defines the database used by my application."
    
  5. 指定提取的 DAC 包文件的路径和文件名。

    ## Specify the location and name for the extracted DAC package.
    $dacpacPath = "C:\MyDACs\MyApplication.dacpac"
    
  6. 添加代码以便使用上面指定的信息运行 Extract 方法。

    ## Extract the DAC.
    $extractionunit = New-Object Microsoft.SqlServer.Management.Dac.DacExtractionUnit($srv, $dbname, $applicationname, $version)
    $extractionunit.Description = $description
    $extractionunit.Extract($dacpacPath)
    
  7. 从您已加载了 SQL Server PowerShell 管理单元的 PowerShell 会话或者通过使用 sqlps 命令提示实用工具,运行 ExtractDAC.ps1。

提取数据层应用程序向导

打开“提取数据层应用程序向导”

  1. 在对象资源管理器中,展开**“数据库”,右键单击某个数据库,指向“任务”,然后单击“提取数据层应用程序”**。

  2. 按照向导中的步骤基于您选择的数据库创建一个 DAC 包。 有关详细信息,请参阅提取数据层应用程序向导 F1 帮助

更改历史记录

更新的内容

添加了有关使用 PowerShell 的部分。