SQL LocalDB против SQL Server CE - PullRequest
       52

SQL LocalDB против SQL Server CE

26 голосов
/ 11 марта 2012

У меня небольшой проект, в котором будет 1 пользователь на 1 компьютер. База данных будет довольно маленькой (вероятно, менее 1 МБ данных). Я планирую использовать WPF и Entity Framework для этого проекта.

Я предложил 2 возможных решения для баз данных для моего проекта: SQL Server CE и SQL Server Express LocalDB (с SQL Server 2012). Я никогда не работал ни с одним из них, я больше привык работать с полной установкой SQL Server 2008.

Я также хочу, чтобы его было легко установить на клиенте. В идеале я хотел бы просто выбросить кучу файлов в папку (вместе с моим .exe файлом).

Так, кто-нибудь может предложить мне лучшую технологию для использования?

Спасибо!

Ответы [ 6 ]

35 голосов
/ 11 марта 2012

См. Презентацию Представление SQL Server Express Local DB Runtime - дает отличный обзор.

Огромным преимуществом LocalDB является то, что это настоящий SQL Server - это специальная версия SQL Server.Express, но в основном он поддерживает все, что есть у «настоящего» SQL Server - пространственные типы данных, хранимые процедуры - вы его называете.

SQL Server Compact Edition, с другой стороны, является очень упрощенной версией - многофункции и типы данных не поддерживаются.Он меньше и более «гибок», но ему не хватает большого эффекта.

Лично я бы выбрал SQL Server Express со средой выполнения LocalDB над SQL Server CE 4, если только вам не нужен крошечный размер SQL Server CE.(например, на мобильном устройстве).

Также см. сравнение между SQL Server CE 3.5, CE 4.0, SQL Server Express 2008 R2 и SQL Server 2012 Express LocalDB на превосходном ErikEJ Веб-сайт SQL Server Compact .

28 голосов
/ 11 марта 2012

Это зависит, но в зависимости от ваших требований (т. Е. Очень небольшого объема данных и установки XCopy) единственным вариантом является SQL Server Compact, поскольку занимаемая площадь SQL Compact на диске составляет около 18 МБ против 160 МБ с LocalDB, и LocalDB требует установки администратора (поставляется только как MSI), но если совместимость с SQL Server важнее, LocalDB является лучшим выбором (как отмечает marc_s)

5 голосов
/ 11 марта 2012

Я действительно собираюсь пойти с ErikEJ здесь.У меня нет репутации, чтобы голосовать за его ответ, но, учитывая вашу запрошенную цель, SQL CE действительно быстрее и быстрее.Многие проблемы сравнения, приведенные ссылкой, предоставленной marc_s на «отсутствующие функции» SQL CE VS LocalDB, устраняются благодаря использованию EntityFramework (процедурный T-SQL не поддерживается, но если вы используете EF, Lambda и LINQ, это не будетдействительно будет проблемой).

4 голосов
/ 01 августа 2013

Забывая все расплывчатые ответы «это легче», «он меньше», «ему не хватает пунша» или «он легче» (без обид), я думаю, что нужно сосредоточиться на главном различии между ними, когда сталкиваешься с выбором :

  • LocalDB вне процесса.
  • CE находится в процессе.

Запуск в рамках процесса подачи заявки или нет, имеет много последствий, которые, вероятно, следует изучить в отдельных вопросах.

Наиболее очевидным из них является то, что если вам нужен доступ к базе данных из нескольких приложений с использованием внутрипроцессной СУБД (например, CE), все приложения будут обращаться к файлу базы данных напрямую, используя свое собственное время процессора. Синхронизировать их действительно сложно, и понимание этого помогает понять, почему у CE меньше функций (и многих других).

Также обратите внимание, что хотя можно опасаться, что несколько процессов, выполняющих один и тот же код CE, могут занимать больше памяти, чем необходимо, помните, что операционная система достаточно умна, чтобы делиться страницами из своего кэша страниц между несколькими процессами, так что один действительно не проблема.

LocalDb - это просто способ автоматического управления обычным экземпляром Express для каждого пользователя (он не отличается от SQL Server Express, это одно и то же).

2 голосов
/ 13 августа 2013

См. на этой странице , чтобы узнать, почему была создана LocalDB

Создан специально для разработчиков. Он прост в установке, не требует управления, но совместим с другими выпусками SQL Server на уровне API. В этом отношении это похоже на облегченную версию бесплатной SQL Server Express редакции.

Хотя это похоже на SQL Server Compact , есть различия:

  • Режим выполнения: SQL Server Compact - это встроенная DLL, а LocalDB работает как отдельный процесс.
  • Использование диска: все двоичные файлы SQL Server Compact составляют около 4 МБ, тогда как установка LocalDB занимает 140 МБ.
  • Особенности: SQL Server Compact предлагает основные функции СУБД, такие как запросы, в то время как LocalDB предоставляет гораздо более богатый набор функций, включая хранимые процедуры, типы данных Geometry и Geography и т. Д.

На мой взгляд, LocalDB часто используется для автономной разработки, чтобы гарантировать, что разрабатываемый код на 100% совместим с вашей производственной базой данных SQL Server.

2 голосов
/ 06 октября 2012

Кроме того, если важно скрыть интеллектуальную собственность / схему / данные от легкого доступа пользователей, SQL CE может быть защищен паролем / зашифрован.База данных SQL Local может быть легко открыта из студии управления.

...