2013-12-11 83 views
8

我正在使用SSDT for Visual Studio 2012 here並使用其命令行工具SQLPackage.exe來發布.dacpac文件。我想發佈到SQL Server database project。我試圖在這個guide使用參數,但無法找到如何做到這一點。如何通過SSDT的SQLPackage.exe將DACPAC文件發佈到SQL Server數據庫項目?

我該怎麼做?

+1

實例被饋送:http://stackoverflow.com/questions/8371879/deploy-sql-server-2012-db-project-via -command-line-sql-server-data-tools-ctp4/8376809#8376809 – Keith

回答

9

您是試圖發佈到數據庫還是從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 /?」在命令行上獲取適用操作的列表。

+0

我想將外部數據庫的模式更新到數據庫項目 –

1

使用Powershell,您可以將其部署到標準本地SQL實例或Azure SQL實例。連接字符串和其他性能將使用sqlpackage.exe的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 
相關問題