Встроенная база данных для .net, которая может работать вне сети

Я искал (и все еще ищу) встроенную базу данных для использования в приложении .net (C#). Предостережение: приложение (или, по крайней мере, база данных) хранится на сетевом диске, но одновременно используется только одним пользователем.

Моей первой идеей была редакция SQL Server Compact . Это действительно хорошо интегрировано, но не может работать вне сети.

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

Blackfish SQL выглядит интересно, но пробной версии .net нет. Ценообразование тоже ОК.

Есть ли другие предложения о том, что хорошо работает с .net и работает вне сети без необходимости фактической установки серверного программного обеспечения?

Ответов (11)

Решение

Этот вопрос теперь древний, и многое изменилось. Для моих конкретных целей я предпочитаю LiteDB . Он с открытым исходным кодом и имеет репозиторий GitHub .

Кроме того, SQLite является отраслевым стандартом для встроенных баз данных. Есть попытки перенести код в .NET, но в основном случае используется собственная библиотека (например, пакет Nuget sqlite ) и / или оболочка .NET P / Invoke, такая как Microsoft.Data.SQLite .

Я бы порекомендовал Advantage Database Server (www.advantagedatabase.com). Это зрелая встраиваемая БД с отличной поддержкой и доступная на многих языках разработки в дополнение к .NET. «Локальная» версия бесплатна, запускается в вашем приложении в форме DLL, не требует установки на сервере / сетевом ресурсе и поддерживает все основные функции БД. Вы можете хранить все файлы БД и / или приложений в сети; ему все равно, где находятся данные.

Отказ от ответственности: я инженер в группе исследований и разработок ADS. Обещаю, это круто :)

Почему бы не использовать выпуск SQL Server 2005 Express?

Это действительно зависит от того, что вы подразумеваете под «встроенным» - но вы можете распространять SQLServer2005E вместе со своими приложениями, и пользователю никогда не нужно знать, что он там есть.

Встраивание SQL Server Express в приложения

Встраивание SQL Server Express в пользовательские приложения

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

SQLite на .NET - начните работу за 3 минуты

Проверьте VistaDB . У них очень хороший продукт, серверная версия (3.4) находится в бета-версии и очень близка к выпуску.

Похоже, ADO / Access идеально подходит для ваших нужд. Он встроен в стек MS, хорошо подготовлен и многопользовательский.

Вы можете программно создать БД так:

Dim catalog as New ADOX.Catalog
Catalog.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\server\path\to\db.mdb")

Затем вы можете использовать стандартные методы ADO.NET для взаимодействия с базой данных.

Вы можете использовать встроенный firebird, это просто DLL, которую вам нужно будет поставлять вместе с вашим приложением.

Что касается недокументированных вещей, это не совсем так, драйвер firebird .NET реализует интерфейсы ADO, поэтому, если вы знаете ADO, вы можете работать с Firebird, в основном вместо SQLConnection вы будете использовать FBConnection и так далее, но мой совет - написать уровень доступа к данным и используйте только интерфейсы в вашем коде, примерно так:

using FirebirdSql.Data.FirebirdClient;

public static IDbConnection MyConnection()
{
    FbConnection cn = new FbConnection("...");
    return cn;
}

Этот пример очень простой, но большего вам не потребуется.

Мы без проблем используем firebird для всего нашего приложения, вы должны хотя бы попробовать.

Еще есть Валентина . Я наткнулся на этот продукт, когда работал над каким-то проектом Real Basic. Версия RB очень хороша.

Немного поздно для публикации здесь .. И VistaDB уже упоминалась, но я хотел указать, что VistaDB управляется на 100% (поскольку ваш пост был помечен .net). Он может работать с общего сетевого диска, и для него развернуто xcopy размером 1 МБ.

Поскольку вы упомянули SQL CE, мы также поддерживаем синтаксис и типы данных T-SQL (на самом деле больше, чем SQL CE) и имеем обновляемые представления, процессы TSQL и другие вещи, отсутствующие в SQL CE.

Я озадачен.

Вы запрашиваете встроенную базу данных - где сама база данных хранится на сервере. это означает хранение файла данных в общей сетевой папке. Затем вы говорите, что SQL Compact Edition не будет работать ... за исключением того, что если посмотреть на этот документ:

Документ Word:
выбор между SQL Server 2005 Compact Edition и SQL Server 2005 Express Edition

На странице 8 у вас есть большая зеленая галочка рядом с «Хранилище файлов данных в общей сетевой папке».

Так что мне кажется, что ваша первая мысль была правильной.

Вы рассматривали OODB? Из различных альтернатив с открытым исходным кодом я рекомендую db4o (извините за саморекламу :)), который может работать как в встроенном, так и в клиент-серверном режиме.

Лучший

Адриано