SQL LocalDB и SQL Server CE

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

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

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

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

Спасибо!

Ответ 1

См. презентацию Знакомство с 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.

Ответ 2

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

Ответ 3

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

Ответ 4

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

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

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

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

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

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

Ответ 5

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

Ответ 6

См. эту страницу для некоторого фона, почему был создан LocalDB

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

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

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

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