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

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

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

У Firebird, похоже, та же проблема, но .NET Integration, по-видимому, не является первоклассной и в значительной степени недокументированной.

Blackfish SQL выглядит интересно, но нет версии .net версии. Цены тоже в порядке.

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

3.08.2008 14:41:43
Интересно, что этот пост не считается «основанным на мнении», в отличие от моего поста stackoverflow.com/questions/20229964/… . В любом случае - я думаю, что все предлагаемые встроенные базы данных работают для одного пользователя на сервере (включая SQL CE), некоторые из них допускают одновременное чтение (например, SQLite), но только одну (по крайней мере, единственную, которую я нашел и проверил, что она работает). !) , что позволяет одновременно пишет это VistaDB
Prokurors 15.12.2013 12:53:22
10 ОТВЕТОВ
РЕШЕНИЕ

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

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

25
28.01.2013 04:20:50
@Sven: SQLite на самом деле имеет довольно полную блокировку файлов, и к базе данных SQLite определенно могут обращаться несколько пользователей одновременно. В файловых системах, которые его поддерживают, SQLite даже будет использовать байтовый диапазон вместо блокировки целых файлов, чтобы повысить производительность при одновременном использовании одной и той же базы данных. Это не доступ; это довольно надежно
Chris Hanson 10.08.2008 09:08:09
Я тестировал его в течение последних недель, и SQLite действительно отличный продукт. Конечно, это не полноценная СУБД, но она обладает всеми функциями, необходимыми для выполнения работы.
Michael Stum♦ 18.10.2008 15:05:20
@ChrisHanson Он разрешает доступ только для чтения нескольким пользователям одновременно
Prokurors 15.12.2013 12:46:47

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

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

10
21.10.2008 19:20:27

Похоже, 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 для взаимодействия с базой данных.

9
4.08.2008 13:56:01

Вы можете использовать Firebird Embeded, это просто DLL, что вам нужно будет поставлять с вашим приложением.

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

using FirebirdSql.Data.FirebirdClient;

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

Этот пример очень прост, но вам не нужно гораздо больше, чем это.

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

9
9.08.2008 12:51:41

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

7
17.07.2018 13:45:36

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

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

7
17.07.2018 13:46:25
Еще одна хорошая вещь о Vista (по сравнению с другими) заключается в том, что она поддерживает одновременную запись в файл базы данных, который находится в сетевом расположении - для меня это была функция принятия решений
Prokurors 15.12.2013 12:55:24

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

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

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

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

5
28.01.2013 04:20:26
@CodingTheWheel: поскольку он требует установки на сервере, и пользователь заметит, что служба работает в фоновом режиме, самое позднее, когда прозвучит сигнал тревоги каждого инструмента сетевой безопасности. Встроенный означает, что он является частью приложения или отдельным файлом .dll, но он не требует какой-либо установки, не пытается выполнять какие-либо действия в реестре и не оставляет никаких файлов после его удаления, кроме базы данных. SQL Server Express не встраивается, Microsoft использует «встраивание» как «Упаковку с вашим приложением, но все еще является отдельной вещью с зависимостями». Есть много вас
Michael Stum♦ 3.08.2008 16:06:09

Я озадачен

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

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

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

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

4
3.05.2015 10:23:38
Это забавно, потому что SQL Server специально говорит мне, что не будет: img512.imageshack.us/img512/6082/sqlceerror.jpg - возможно, это недоразумение, поскольку создание кажется невозможным, а доступ может работать. Однако для моих целей создание базы данных при запуске приложения было критически важным.
Michael Stum♦ 22.04.2009 22:02:11
Реальность превосходит документацию почти в каждом случае - тогда возникает вопрос, почему документы говорят «не то» (или, по крайней мере, как возникает несоответствие). [FX: Browse, Browse] Информация в MSDN довольно тонкая
Murph 23.04.2009 11:53:29
Вы МОЖЕТЕ хранить свою базу данных на SQL Server в сетевом хранилище, но только 1 SQL Server может получить к ней доступ. И тогда вы работаете в подключенном режиме, который медленнее, чем грязь. То, что ты можешь, не означает, что ты должен. Он спрашивал о каждом приложении, обращающемся к базе данных напрямую, а не через серверное приложение.
Jason Short 16.05.2009 06:05:34
Джейсон, не желая быть грубым, примерно половина этого комментария ошибочна, потому что мы не говорим о многопользовательской серверной версии в любой момент, просто о компактной версии, которая в основном является .DLL (в отличие от Express или другого "сервера"). версии).
Murph 19.05.2009 13:24:41

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

2
10.08.2008 02:55:20

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

Лучший

Адриано

2
16.05.2010 15:18:27