如何通过SSDT的SQLPackage.exe将DACPAC文件发布到SQL Server数据库项目?

时间:2013-12-11 07:55:59

标签: publish database-project sql-server-data-tools dacpac sqlpackage

我正在使用SSDT for Visual Studio 2012 here并使用其命令行工具SQLPackage.exe发布.dacpac文件。

我想将其发布到SQL Server database project。我正试图在guide处使用参数,但无法找到方法。

我该怎么做?

2 个答案:

答案 0 :(得分:10)

您是要尝试发布到数据库,还是从dacpac创建数据库项目?这是两件不同的事情。

  • 要基于dacpac创建数据库项目,请在Visual Studio中创建新的SQL Server数据库项目。然后在解决方案资源管理器中右键单击该项目,然后选择“导入 - >数据层应用程序(* .dacpac)”并选择您的dacpac。这会将dacpac的内容转换为项目中的脚本,如果选择“导入数据库设置”,将根据dacpac中的设置设置数据库选项。不幸的是,通过我所知道的命令行工具无法做到这一点。

  • 要使用SqlPackage.exe发布到数据库,您链接的指南具有所有选项。一个简单的命令是“sqlpackage / a:publish /sf:db1.dacpac / tsn:localhost / tdn:db1”将dacpac“db1”发布到数据库“localhost \ db1”。对于其他发布选项,请键入“sqlpackage / a:publish /?”在命令行上获取适用操作的列表。

答案 1 :(得分:2)

使用Powershell,您可以部署到标准内部部署SQL实例或Azure SQL实例。连接字符串和其他属性将从PublishProfile

提供
$PublishPath = "Path for the log"
$dacpac = "dbname.dacpac"
$publishProfile = "dbname.xml" # Publish profile xml for Publishing the database project

# Generate Deploy Report
$DeployReport =  ".\sqlpackage.exe /Action:DeployReport /Sourcefile:$dacpac `
                   /pr:'$publishProfile' /outputpath:$PublishPath"

Invoke-Expression $DeployReport

# Generate Script Report
$GenerateScript =  ".\sqlpackage.exe /Action:Script /Sourcefile:$dacpac `
                     /pr:'$publishProfile' /outputpath:$PublishPath"

Invoke-Expression $GenerateScript

# Database Publish
$publish = ".\sqlpackage.exe /Action:Publish /Sourcefile:$dacpac `
             /pr:'$publishProfile'"

Invoke-Expression $publish | Out-File $PublishPath