問題タブ [dacpac]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - SqlPackage.exe によるデータ層アプリケーションのバージョンの更新
現在、 SqlPackage.exe を使用してコマンド ラインからアプリケーション データベースの展開を自動化していますが、データ層アプリケーションのバージョンを更新する方法が見つかりません。
(開発はもちろん…)
http://msdn.microsoft.com/en-us/library/hh550080%28v=vs.103%29.aspx
/Action:Publish を使用して、新しく構築した *.dacpac をプッシュしていますが、これが不可能な場合、バージョンは常に v1.0.0.0 のままです。ExtendedProperty を変更するにはどうすればよいでしょうか。
データベースを見て、インストールされているバージョンを参照したいだけです。
何か案は?
c# - dacpac をトラバースする方法
新しい SQL 2012 データベースを参照できるように、dbproj を sqlproj にアップグレードしようとしています。現在、.dbschema xml ファイルを読み取ってすべてのテーブルと列を検索し、それらから情報を取得するプログラムがあります。このデータを使用して、独自のカスタム クラスを構築します。
新しい sqlproj ファイルは、必要なデータを取得するために問い合わせたい dacpac を生成します。dacpac をトラバースして必要な情報を取得するために、次のように記述しました。
これを正しい方法で行っているのか、それとももっと良い/簡単な方法があるのか わかりません。Google/SE で何を検索したらよいかわからず、例も見つかりません。
変数列には、Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlSimpleColumn である ContextObject という非パブリック メンバーがあることがわかります。このオブジェクトにアクセスできれば、そこから必要なすべての情報を引き出すことができます。テーブルには、私を助ける同様の ContextObject もあります。
とにかく、現在これはdacpacを開き、すべてのテーブルと列の名前を取得します。私が取得するデータの例は次のとおりです。
基本的には、次のいずれかを行いたいと考えています。
- ContextObject にアクセスして、Microsoft.Data.Tools.Schema.Sql.SchemaModel.* オブジェクトを取得する OR
- ObjectType プロパティからプロパティとメタデータの値を取得する OR
- この情報を簡単に取得する方法を使用して、ゼロから始めます
列の型、null 可能かどうか、列のスケールと精度などの情報を取得する必要があります。
powershell - DACFx 3.0 API を使用した DACPAC のアップグレード - 既存のデータベースの現在の DAC バージョンを調べる方法は?
私は現在、2.0 の代わりに DACFx 3.0 API を使用するように、チームのデータベース展開 Powershell スクリプトを書き直しています。Microsoft.SqlServer.Dac.DacServices
新しいコントローラー クラスを使用して、DACPAC のアップグレードを正常に機能させることができました。
残っている唯一の問題は、現在の DACPAC バージョン番号を既存のデータベースから取得するにはどうすればよいかということです。
展開スクリプトの一部として、これをアップグレード先の DACPAC バージョンと比較して、展開が必要かどうかを判断します。これは、データベース関連のテストを実行するかどうかを決定するためにも使用されるため、この方法でビルドにかかる時間を大幅に短縮できます。
古い DacFx2.0 API はMicrosoft.SqlServer.Management.Dac
名前空間に存在するため、古い Powershell スクリプトではDacStore
、データベース接続からオブジェクトを作成し、そこから Version プロパティを取得するだけです。
以前の PowerShell スクリプト
現在 3.0 の問題、API は名前空間にあり、「以前のバージョンのおよびクラスMicrosoft.SqlServer.Dac
を使用する代わりに、ほとんどすべてがまったく新しいコントローラー クラスにリファクタリングされています。( src )」DacStore
DacExtractionUnit
DacServices
DacStore
クラスで同等のものをDacServices
まだ見つけることができなかったため、現時点では、現在の DAC バージョンを取得する方法がわかりません。MSDN のドキュメントを検索してみましたが、Powershell のすべてのセクションで古い DACFx2.0 API が参照されていました。(例:ここ)。
誰かが私を助けることができれば、それは大歓迎です。ありがとう!
sql - SQL スクリプトのエラー: バッチごとに許可されるステートメントは 1 つだけです
PostDeployment の DACPAC で実行したい 4 つの SQL スクリプトがありますが、そのうちの 3 つの VS プロジェクトをビルドしようとすると、次のエラーが発生します。
スクリプトINSERT
には、DB 上の異なるテーブルのステートメントのみが含まれています。そして、それらはすべてそのように構成されています
異なるテーブルと異なるデータのみ。
私の質問は、構文と操作の点ですべてのスクリプトが同じであるのに、VS がそのうちの 3 つについて不平を言うのはなぜですか?
PS: エラーが示すようにステートメント間に 'GO' を追加しても何も起こりません。
sql-server - xml の dacpac はサポートされていません
「for xml」を使用する関数を含むデータベースからデータ層アプリケーションまたは dacpac をエクスポートしようとすると、すべての関数とその関数に依存するすべてのオブジェクトが失敗し、dacpac を作成できません。ウィザードは、これらのオブジェクトをサポートされていないと報告します。
データベース: SQL Server 2008 R2
関数が失敗するエラー:
[dbo].[fn_FunctionName] () 失敗 このデータベースに存在しないオブジェクト '[XmlData].[value] (UnresolvedEntity)' に依存します。
クエリの例:
.net - dacpac ファイルに DLL を含める
SMO を使用して、自分の開発マシンから離れたリモート SQL 環境に dacpac をデプロイしたいと考えています。私のプロジェクトでは、「ソリューションのビルド」を押したときにビルド ディレクトリに出力される .dll ファイルを参照しています。
.dll ファイルを dacpac にバンドルすることはできますか? または、dacpac ファイルを含む参照ファイルをリモート サーバー上の指定されたフォルダーに配置して参照する必要がありますか?
現在、「ローカルのコピー」を true に設定しても dacpac に dll が含まれていないため、リモート環境に展開すると「参照 dll にファイルが提供されませんでした」というエラーが表示されます。
Model.xml を開くと、ハード ドライブ上の参照先をファイルが指していることがわかります。これを変更して、出力された dacpac フォルダーを動的に参照するにはどうすればよいですか?
ありがとう
sql-server - 2 つの dacpac から更新スクリプトとしてデータの変更を取得する方法
2 つの .dacpac ファイルから、次のコマンドを使用して更新スクリプトを取得できます
sqlpackage.exe /Action:Script /SourceFile:"C:\Test\bin\Debug\Test.dacpac" /TargetServerName:localhost\DenaliRC0 /TargetDatabaseName:deploy_Test
これにより、DDL の変更 (スキーマの変更) のみが生成されます。ただし、データの変更は含まれていません。2 つの dacpac からこれらのデータ変更 (DML) を取得できる方法はありますか?
Flowing は、スキーマの変更を取得するために使用する Java コードです。
sql-server-2008 - SSDT プロジェクトのビルド エラー - デバッグ モードで dacpac ファイルへのアクセスが拒否されました
SSDT プロジェクトをビルドしようとしています。「ビルド」を実行すると、次のエラー メッセージが表示されます。
- パス「whateverMyPathIs\bin\debug\myProjectName.dacpac」へのアクセスが拒否されました。
- 03061: ファイル "whateverMyPathIs\bin\debug\myProjectName.dacpac" を削除できません。パス「whateverMyPathIs\bin\debug\myProjectName.dacpac」へのアクセスが拒否されました。C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets
私が気づいたこと:
- プロジェクトを「リリース」モードでビルドすると、上記のエラー メッセージが表示されません。
- Process Explorer を使用して、dacpac ファイルが他のプロセスで使用されているかどうかを確認しようとしましたが、何も見つかりませんでした。
- プロジェクト設定/ビルドから、「ビルド出力パス」を「bin/debug」から別の場所に変更すると、ビルドは正常に機能します。
- マシンを再起動した後、「アクセスが拒否されました....」に関する最初のエラー メッセージのみが表示されます。03061 から始まるエラー メッセージは表示されません。
Visual Studio 2012、SQL 2000 R2、SSDT 2012 を使用しています