30

1台のコンピューターに1人のユーザーがいる小さなプロジェクトがあります。データベースはかなり小さくなります(おそらく1 mb未満のデータ)。そのプロジェクトにはWPFとEntityFrameworkを使用する予定です。

私は自分のプロジェクトに2つの潜在的なデータベースソリューションを思いつきました。SQLServerCEとSQLServerExpress LocalDB ( SQL Server 2012を使用)です。私はこれらのいずれかを使用したことがなく、SQLServer2008の完全インストールを使用することに慣れています。

また、クライアントに簡単にインストールできるようにしたいと思います。理想的には、(.exeファイルと一緒に)フォルダーに大量のファイルをスローしたいだけです。

それで、ここの誰かが私に使用するのに最適な技術を提案することができますか?

ありがとう!

4

6 に答える 6

38

SQLServerExpressローカルDBランタイムの紹介のプレゼンテーションを参照してください-優れた概要を示します。

LocalDBの大きな利点は、実際のSQLServerであるということです。これはSQLServer Expressの特別なバージョンですが、基本的には、「実際の」SQL Serverが持つすべての機能(空間データ型、ストアドプロシージャ)をサポートします。

一方、SQL Server Compact Editionは、非常に縮小されたバージョンです。多くの機能とデータ型はサポートされていません。それはより小さく、より「機敏」です-しかし、それは多くのパンチを欠いています。

私は個人的に、SQL Server CE4よりもLocalDBランタイムを備えたSQLServerExpressを選択します。ただし、SQL Server CEの小さなサイズが特に必要な場合を除きます(モバイルデバイスなど)。

また、ErikEJの優れたEverything SQL Server Compact Webサイトで、SQL Server CE 3.5、CE 4.0、SQL Server Express 2008 R2、およびSQL Server 2012ExpressLocalDBの比較を参照してください。

于 2012-03-11T14:04:50.417 に答える
29

状況によって異なりますが、要件(つまり、非常に少量のデータとXCopyのインストール)に基づいて、唯一のオプションはSQL Server Compactです。これは、ディスク上のSQLCompactのフットプリントがLocalDBの場合の160MBに対して約18MBであり、LocalDBには管理者インストール(MSIとしてのみ提供)-ただし、SQL Serverの互換性がより重要な場合は、LocalDBが最適です(marc_sのメモとして)

于 2012-03-11T16:12:17.207 に答える
6

漠然とした「簡単」、「小さめ」、「パンチが足りない」、「軽い」(不快感なし)の答えをすべて忘れて、選択に直面したときの2つの主な違いに焦点を当てるべきだと思います。

  • LocalDBはアウトプロセスです。
  • CEは進行中です。

申請プロセスの一部として実行するかどうかには多くの影響があり、おそらく別の質問で調査する必要があります。

ただし、最も明白なのは、インプロセスDBMS(CEなど)を使用して複数のアプリケーションからデータベースにアクセスする必要がある場合、すべてのアプリケーションが独自のCPU時間を使用してデータベースファイルに直接アクセスすることです。それらを同期することは非常に困難であり、これを理解することは、CEの機能が少ない理由(それや他の多くのもの)を理解するのに役立ちます。

また、同じCEコードを実行する複数のプロセスが必要以上にメモリを消費する可能性があることを心配するかもしれませんが、オペレーティングシステムは、複数のプロセス間でページキャッシュからページを共有するのに十分スマートであるため、実際には問題にならないことに注意してください。 。

LocalDbは、通常のExpressインスタンスを自動的に、ユーザーごとに管理する方法です(SQL Server Expressと同じです)。

于 2013-08-01T15:39:55.493 に答える
5

私は本当にここでErikEJと一緒に行くつもりはありません。私は彼の答えに投票するという評判はありませんが、要求されたターゲットを考えると、SQLCEは実際に最も速く出入りします。SQLCEの「不足している機能」VSLocalDBでmarc_sによって提供されるリンクで提供される比較の問題の多くは、EntityFrameworkを使用することで軽減されます(手続き型T-SQLはサポートされていませんが、EF、Lambda、およびLINQを使用する場合はサポートされません。本当に問題になります)。

于 2012-03-11T18:03:58.750 に答える
3

LocalDBが作成された理由の背景については、このページを参照してください

これは、開発者向けに特別に作成されました。インストールは簡単で、管理は不要ですが、APIレベルで他のSQLServerエディションと互換性があります。この点で、これは無料のSQLServerExpressエディションの軽量バージョンのようなものです。

これはSQLServerCompactに似ているように見えますが、違いがあります。

  • 実行モード:SQL Server CompactはインプロセスDLLですが、LocalDBは別のプロセスとして実行されます。
  • ディスク使用量:すべてのSQL Server Compactバイナリは約4MBですが、LocalDBのインストールには140MBかかります。
  • 機能:SQL Server Compactは、クエリなどのコアRDBMS機能を提供しますが、LocalDBは、ストアドプロシージャ、ジオメトリ、地理データ型などのはるかに豊富な機能セットを提供します。

私の見方では、LocalDBは、開発するコードが本番SQL Serverデータベースと100%互換性があることを確認するために、オフライン開発によく使用されます。

于 2013-08-12T21:56:04.043 に答える
2

また、ユーザーが簡単にアクセスできないように知的財産/スキーマ/データを隠すことが重要な場合は、SQLCEをパスワードで保護/暗号化できます。SQL Local dbは、ManagementStudioから簡単に開くことができます。

于 2012-10-06T01:22:21.400 に答える