web-dev-qa-db-ja.com

SSDTのSQLPackage.exeを介してDACPACファイルをSQLServerデータベースプロジェクトに公開するにはどうすればよいですか?

Visual Studio 2012用のSSDTを使用しています ここ そしてそのコマンドラインツールSQLPackage.exeを使用して.dacpacファイルを公開しています。

それをSQL Server database projectに公開したいと思います。私はこれでパラメータを使おうとしています ガイド しかしそれを行う方法を見つけることができません。

どうやってやるの?

11
Nam G VU

データベースに公開しようとしていますか、それともdacpacからデータベースプロジェクトを作成しようとしていますか?これらは2つの異なるものです。

  • Dacpacに基づいてデータベースプロジェクトを作成するには、VisualStudioで新しいSQLServerデータベースプロジェクトを作成します。次に、ソリューションエクスプローラーでプロジェクトを右クリックし、[インポート]-> [データ層アプリケーション(* .dacpac)]を選択して、dacpacを選択します。これにより、dacpacの内容がプロジェクト内のスクリプトに変換され、[データベース設定のインポート]を選択すると、dacpacの設定に基づいてデータベースオプションが設定されます。残念ながら、私が知っているコマンドラインツールを使用してこれを行う方法はありません。

  • SqlPackage.exeを使用してデータベースに公開するには、リンク先のガイドにすべてのオプションがあります。単純なコマンドは「sqlpackage/a:publish /sf:db1.dacpac/tsn:localhost/tdn:db1」で、dacpac「db1」をデータベース「localhost\db1」に公開します。その他の公開オプションについては、「sqlpackage/a:publish /?」と入力してください。コマンドラインで適用可能なアクションのリストを取得します。

10
Kevin Cunnane

Powershellを使用すると、標準のオンプレミスSQLインスタンスまたはAzureSQLインスタンスのいずれかにデプロイできます。接続文字列およびその他のプロパティは、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
2
user4784030