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.