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

问题描述 投票:11回答:2

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

我想把它发布到SQL Server database project。我正在尝试在这个guide上使用参数,但无法找到如何做到的方法。

我怎样才能做到这一点?

publish database-project sql-server-data-tools dacpac sqlpackage
2个回答
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 /?”获取命令行上的适用操作列表。

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
© www.soinside.com 2019 - 2024. All rights reserved.