【问题标题】:Import database with SSDT programmatically以编程方式使用 SSDT 导入数据库
【发布时间】:2016-04-07 10:53:05
【问题描述】:

我有一种情况,我需要从数据库中复制所有内容(数据除外)并将其部署到新数据库中。我目前正在通过从现有数据库导入 SSDT 来执行此操作,然后将项目发布到新数据库。

我想知道是否有办法以编程方式执行此操作。理想情况下,我希望有一个流程,我可以为该流程提供要复制的数据库的名称、要复制到的数据库的名称,然后该流程将自动执行导入和导出。

有什么好的方法可以做到这一点?

【问题讨论】:

    标签: sql-server database deployment sql-server-data-tools


    【解决方案1】:

    SSDT 由一个名为 Data-Tier Application Framework(也称为 DacFX)的库提供支持。 DacFX 是一个公共 API,可用于提取和发布 dacpac 文件。您可以在 Visual Studio 或 SQL Server 下的 Program Files 中找到 DacFX 的副本,该目录如下所示:

    • C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\130
    • C:\Program Files (x86)\Microsoft SQL Server\130\DAC\bin

    您可以在此处下载最新版本的 DacFX: https://www.microsoft.com/en-us/download/details.aspx?id=51672

    请注意,当您安装 DacFX 时,还需要安装其依赖项 SqlSysClrTypes 和 SqlDom,可在上述下载页面的系统要求部分找到。

    要使用 DacFX 提取和发布 dacpac 文件,您可以使用SqlPackage.exe,如下所示:

    C:\Program Files (x86)\Microsoft SQL Server\130\DAC\bin\SqlPackage.exe /a:extract /scs:"Data Source=YOURSERVER;Initial Catalog=YOURDB;Integrated Security=true" /tf:C:\temp\yourdb.dacpac

    C:\Program Files (x86)\Microsoft SQL Server\130\DAC\bin\SqlPackage.exe /a:publish /tcs:"Data Source=YOURSERVER;Initial Catalog=YOUROTHERDB;Integrated Security=true" /sf:C:\temp\yourdb.dacpac

    或者,您可以使用 Microsoft.SqlServer.Dac API 以编程方式使用 DacFX,如下所示: using Microsoft.SqlServer.Dac; class Program { static void Main(string[] args) { DacServices ds = new DacServices("Data Source=YOURSERVER;Initial Catalog=YOURDB;Integrated Security=true"); ds.Extract(@"C:\temp\yourdb.dacpac", "YOURDB", "AppName", new System.Version()); using (DacPackage dp = DacPackage.Load(@"C:\temp\yourdb.dacpac")) { ds.Deploy(dp, "YOUROTHERDB"); } } }

    【讨论】:

      【解决方案2】:

      您可以通过编程方式执行此操作,但我想说最简单的方法是购买 redgate sqlcompare 的许可证并使用其命令行版本。

      【讨论】:

        【解决方案3】:

        Database Create Script

        [2]:在代码中运行此脚本

        希望对你有帮助

        【讨论】:

        • 谢谢,但我想以编程方式进行
        猜你喜欢
        • 2018-11-27
        • 2011-03-25
        • 1970-01-01
        • 2014-04-07
        • 1970-01-01
        • 2021-07-03
        • 1970-01-01
        • 1970-01-01
        • 2010-09-14
        相关资源
        最近更新 更多