web-dev-qa-db-ja.com

SQLLocalDBとSQLServer CE

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

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

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

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

ありがとう!

28
danbord

SQL Server ExpressローカルDBランタイムの紹介 プレゼンテーションを参照してください-概要がわかります。

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

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

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

ErikEJの優れたすべてのSQL Serverについて、 SQL Server CE 3.5、CE 4.0、SQL Server Express 2008 R2、およびSQL Server 2012 Express LocalDB の比較も参照してください。 CompactWebサイト。

35
marc_s

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

28
ErikEJ

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

5
Matthew Hintzen

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

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

アプリケーションプロセスの一部として実行するかどうかには多くの影響があり、おそらく別の質問で検討する必要があります。

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

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

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

4
tne

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

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

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

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

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

2
Amro

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

2
ninjadotnet