Sql server 以编程方式使用SSDT导入数据库

Sql server 以编程方式使用SSDT导入数据库,sql-server,database,deployment,sql-server-data-tools,Sql Server,Database,Deployment,Sql Server Data Tools,在这种情况下,我需要复制数据库中的所有内容(数据除外),并将其部署到新数据库中。我目前正在通过将现有数据库导入到SSDT中,然后将项目发布到新数据库来实现这一点 我想知道是否有一种方法可以通过编程实现。理想情况下,我希望有一个适当的流程,我可以给流程指定要复制的数据库的名称,要复制到的数据库的名称,然后流程将自动执行导入和导出 做这件事的好方法是什么? [2] :在代码中运行此脚本 我希望它能对你有所帮助,但我想说最简单的方法是为redgate sqlcompare购买一个许可证,并使用该许可证

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

我想知道是否有一种方法可以通过编程实现。理想情况下,我希望有一个适当的流程,我可以给流程指定要复制的数据库的名称,要复制到的数据库的名称,然后流程将自动执行导入和导出

做这件事的好方法是什么?

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


我希望它能对你有所帮助,但我想说最简单的方法是为redgate sqlcompare购买一个许可证,并使用该许可证的命令行版本。

SSDT由一个名为数据层应用程序框架(也称为DacFX)的库提供支持。DacFX是一个公共API,可用于提取和发布dacpac文件。您可以在Visual Studio或SQL Server下的程序文件中找到DacFX的副本,其目录如下:

  • C:\ProgramFiles(x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\130
  • C:\ProgramFiles(x86)\Microsoft SQL Server\130\DAC\bin
您可以在此处下载最新版本的DacFX:

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

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

C:\ProgramFiles(x86)\Microsoft SQL Server\130\DAC\bin\SqlPackage.exe/a:extract/scs:“数据源=YOURSERVER;初始目录=YOURDB;集成安全=true”/tf:C:\temp\YOURDB.dacpac

C:\ProgramFiles(x86)\Microsoft SQL Server\130\DAC\bin\SqlPackage.exe/a:publish/tcs:“数据源=YOURSERVER;初始目录=YOUROTHERDB;集成安全=true”/sf:C:\temp\yourdb.dacpac

或者,您可以使用Microsoft.SqlServer.Dac API以编程方式使用DacFX,如下所示:
使用Microsoft.SqlServer.Dac;
班级计划
{
静态void Main(字符串[]参数)
{
DacServices=newdacservices(“数据源=YOURSERVER;初始目录=YOURDB;集成安全=true”);
提取(@“C:\temp\yourdb.dacpac”、“yourdb”、“AppName”、new System.Version());
使用(DacPackage dp=DacPackage.Load(@“C:\temp\yourdb.dacpac”))
{
部署(dp,“YOUROTHERDB”);
}
}

}

谢谢,但我想通过编程来解决这个问题