問題タブ [sql-server-data-project]
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.
c# - SSDT プロジェクトからプログラムで dacpac ファイルを作成する
.dacpac
既存の SSDT プロジェクトから「新しい」ファイルを作成することはできますか? 各自動エンド ツー エンド テストの前に、データベースを再作成 (分解 + セットアップ) できるようにしたいと考えています。
sql-server - SSDT 生成スクリプトが SET AUTO_CREATE_STATISTICS で構文エラーを生成する
SSDT の「スクリプトの生成」機能を使用して、データベース スクリプトを作成しています。ただし、スクリプトを実行すると、SSMS によると、生成されたスクリプトには構文エラーがあります。エラーのあるコードは次のとおりです。
エラーは次のとおりです。
メッセージ 102、レベル 15、状態 1、行 208 'INCREMENTAL' 付近の構文が正しくありません。メッセージ 319、レベル 15、状態 1、行 211 キーワード「with」付近の構文が正しくありません。このステートメントが共通テーブル式、xmlnamespaces 句、または変更追跡コンテキスト句である場合、前のステートメントはセミコロンで終了する必要があります。メッセージ 102、レベル 15、状態 1、行 211 'IMMEDIATE' 付近の構文が正しくありません。
私が知る限り、生成される構文は SQL Server 2012 CTP1 で廃止されました。
SSDT バージョン 14.0.609.18 で Visual Studio バージョン 14.0.25431.01 Update 3 を使用しています。このスクリプトを SQL Server 11.0.6020 に対して実行しています。
Visual Studio からパブリッシュしたり、Visual Studio からスキーマ比較を行ったり、SSMS または VS で DACPAC アップグレードを介してこのスキーマを適用したり、DacFx を介してビルドの DACPAC をエラーなしで適用したりできることに注意してください。生のスクリプトを実行するときにのみ、このエラーが発生します。
問題のあるコードを削除すると、期待どおりに機能します。特定のケースのスクリプトが必要です。SSDT が不適切な構文を作成している理由を理解しようとしています。展開前に生成されたスクリプトに対して行う必要がある手動編集のチェックリストを作成する必要はありません。
誰にもアイデアはありますか?ありがとうございました!
sql-server - reffenrenced テーブルを作成せずに Sql Server データベース プロジェクトでビューを作成する方法
VS 2015 で Sql Server データベース プロジェクトにビューを追加しようとしています。ビューは、プロジェクトで定義されていない 2 つのテーブルを参照しています。したがって、私のビュー DDL は次のようになります。
TableA も TableB もデータベース プロジェクトに存在しませんが、どちらもターゲット データベースに存在します。それらは別のアプリケーションに属しており、ターゲットデータベースのテーブル/ビューのサブセットのみを定義するため、この特定のプロジェクトによって制御されるべきではないため、それらをプロジェクトに追加したくありません。エラーが原因でプロジェクトをコンパイルできません:
Error: SQL71501: View: [dbo].[My_View] has an unresolved reference to object [dbo].[TableA].
(および同じ根本原因からのさらにいくつかのエラー)
master db への参照を追加しようとしましたが、うまくいきませんでした。
このエラーを回避する方法はありますか? または、実際の DDL でこれらのテーブルを定義せずに、どうにかして TableA と TableB への参照をプロジェクトに追加しますか?
entity-framework - データベース プロジェクトのスキャフォールド EF Core
Visual Studio SQL Server データベース プロジェクトから直接 EF Core をスキャフォールディングするにはどうすればよいですか?
次のような解決策が推奨されます。
それが全体の質問です。以下は私の状況の詳細です。代替ソリューションを提供できる場合があります。
MS は EF Core がまだ運用環境に対応していないことを認めていますが、EF 6 の進歩が止まってから 3 ~ 4 年が経過しています。このようにして、 「EF Core を使用することになります」というタイトルの物語が始まります。
この部分は意見が分かれていますが、私にとって (25 年以上のエンタープライズ ソフトウェアの設計と開発の経験に基づくと) Code-First は絶対に初心者ではありません。1 週目の小さなアプリケーションの概念には問題ありませんが、制約やビューなどを統合するための合理的なパターン/プロセス/プラクティスはありません。ビューが設計されていない場合、実際のビジネス アプリは開発者が LINQ 式で論理の基礎を繰り返すことになります。 LINQ-to-SQL クエリをサポートするためにコードに静的フィールドを散らかし、LinqKit を使用してマイクロ組み合わせパターンを混乱させるなどです。制約がなければ、実行時エラーを処理するための防御コード要件が 10 倍になり、ユニットが急速に開花します。および統合テスト、およびデモの失敗が標準になります。オブジェクト指向の専門家が SQL の専門家になるか、その逆か、そして、エンジニアを見つけて適切に補償することの難しさを大幅に高めています。これらの問題はすべて、4 年前に Rowan Miller との詳細な会話で指摘したものです (彼は最近 EF チームを去りましたが、これは短期的な解決策の前兆ではありません)。
モデル ファースト (.edmx
以前の EF バージョンのビジュアル デザイナー) は、明らかにテーブルから外れています。これに対する MS の解決策は、コード ファーストが本当にモデル ファーストであると主張し、手を洗うことだったからです。したがって、真にニュートラルであり、明確にするために「コントラクト ファースト」と呼びましょう。このアプローチは EF Core には存在しません。
それで、その暴言(申し訳ありませんが、イライラします)は私をデータベースファーストに導きますScaffold-DbContext
。当社の DB スキーマは現在、リビジョン管理された Visual Studio SQL Server データベース プロジェクトです。これに関するいくつかの既知の問題はさておき、DB スキーマ (現在は単一の真実) を取得し、そこからライブ データベースを再構築し、ライブ データベースからコードを逆生成する必要があるのはばかげているように思えます。データベース タイプのアライメントを確認するためだけに、ビルド プロセスの一部となります。代わりに、単純に変更を検出し、DbContext と関連するエンティティをデータベース プロジェクトから直接再生成できるようにしたいと考えています。
SSDT データベース プロジェクトは、通常データベース接続が必要な多くの UI で、データベースのようなオブジェクトを利用できるようにします。そのため、データベース スキーマを既存のツールのソースとして使用するのは簡単なことではないかと思います。たとえば、接続文字列でメタデータ プロバイダーを使用したり、EF Core コードを簡単に変更したりします。
SQL Sharpenerは、「設計時に SQL ファイルを信頼できるソース (SSDT プロジェクトで見つかったものなど) として使用して生成する」ものであり、以前のバージョンの EF でこの問題の解決策として推奨されていましたが、そうではありません。 EF Core をサポートしていません。
SQLite と SQL Server Compact Toolboxは、.DACPAC から直接 EF モデルを生成するためのサポートを追加したばかりですが、その機能はEntityFramework Reverse POCO Code First Generatorに依存しているように見えます。これは、 TODO Listに「EF Core のサポート」を目立つようにリストしています。このプロジェクトの主な貢献者は、その非互換性を確認しています。
ヘルプ?
sql-server-data-tools - Visual Studio での SQL Server データベース プロジェクト - 新しいデータベースの構築方法
新しいデータベースが作成される SQL Server データベース プロジェクトを作成したいと考えています。これが私のプロジェクトの構造です:
基本的には 4 つのテーブルが必要なので、4 つ.sql
のスクリプトを追加しました。
また、デプロイ前 (既存のデータを削除するため) とデプロイ後スクリプト (初期データをシードするため) も追加しました。
導入前:
導入後:
- しかし、プロジェクトをビルドするたびにデプロイされません-ビルドが成功したことを示すだけです
- また、データベース作成スクリプトはどこにありますか。
- 公開を右クリックし、スクリプトを生成するオプションを選択すると、メイン スクリプトには展開前および展開後のスクリプトのみが含まれていました。-
これは生成されるスクリプトです -
ご覧のとおり、テーブルの作成スクリプトは、公開に使用されるこのスクリプトにはありません。なぜですか? これは、テーブルを最初から作成する必要がある要件を満たす正しい方法ですか?