12

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

我想将其发布到SQL Server database project. 我正在尝试在本指南中使用参数,但找不到方法。

我怎样才能做到这一点?

4

2 回答 2

11

您是要发布到数据库,还是从 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 /?” 获取命令行上适用操作的列表。

于 2013-12-11T18:24:09.767 回答
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
于 2015-04-18T04:38:05.197 回答