Visual Studio 2012用のSSDTを使用しています ここ そしてそのコマンドラインツールSQLPackage.exe
を使用して.dacpacファイルを公開しています。
それをSQL Server database project
に公開したいと思います。私はこれでパラメータを使おうとしています ガイド しかしそれを行う方法を見つけることができません。
どうやってやるの?
データベースに公開しようとしていますか、それとも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 /?」と入力してください。コマンドラインで適用可能なアクションのリストを取得します。
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