Я обнаружил, что SQL CE не является потокобезопасным:
Объекты SQL CE не являются потокобезопасными и не привязаны к потокам. Если экземпляр SqlCeConnection или SqlCeTransaction совместно используется потоками без обеспечения безопасности потоков, это может привести к исключению нарушения доступа.)
Мне нужно поделиться подключением, так как существует много клиентских экземпляров, каждый из которых одновременно читает / записывает в БД.
Кроме того, чтобы поддерживать скорость, я не хочу использовать блокировку, я думаю, мне нужно будет использовать стандартный SQL-сервер, верно? Спасибо
Ни один продукт базы данных, независимо от того, насколько высоко вы продвигаетесь по цепочке, не позволит вам совместно использовать соединения и транзакции между потоками одновременно. Вам всегда придется сериализовать доступ к транзакции / соединению. Вы просите бессмысленного требования. Один поток собирается зафиксировать то, что другой только что откатил? Существует множество продуктов, которые поддерживают тысячи и тысячи клиентов, одновременно читающих и записывающих базу данных. Никаких «общих» соединений между потоками.
Для достижения высокой масштабируемости вы должны делать то же самое, что и все остальные:
Если нагрузка является интенсивной для чтения, вы можете рассмотреть модель изоляции с контролем версий, такую как зафиксированный моментальный снимок чтения в SQL Server. Если нагрузка является интенсивной для обновлений, вы должны следовать принципам OLTP и использовать короткие, детализированные блокировки для выполнения любого обновления, избегая при этом работы с коррелированными элементами из разных транзакций, чтобы уменьшить вероятность взаимоблокировок.
Если SQL CE имеет необходимые функции, вам следует взглянуть на sql express, а не покупать стандартный, однако ни один продукт не был оптимизирован для многопользовательского доступа, такого как стандарт sql и выше.
Вы правы, SQL CE не поддерживает несколько подключений к одной базе данных. Вам нужно продвинуться по цепочке к чему-то немного большему.
SQL Express будет следующим шагом и определенно работает в многопользовательских сценариях. И, что самое главное, это бесплатно. Так что пока пределы размещение на нем не помешает вам выполнить работу, вам будет гораздо лучше использовать его.
Кроме того, это практически обновление на месте, чтобы перейти с Express на Standard, когда придет время.