我正在使用SSDT for Visual Studio 2012 here并使用其命令行工具SQLPackage.exe
发布.dacpac文件。
我想将其发布到SQL Server database project
。我正试图在guide处使用参数,但无法找到方法。
我该怎么做?
答案 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