БД SQL CE не читает на устройстве Windows 6.5 при сборке на Win 7 - Win 8

Кажется, у меня возникла та же проблема, что и у другого пользователя. Файл SDS SQLServerCE в Windows 7, однако совет из этой ветки не решил мою проблему.

Это относится к SQL Server CE v3.1 (DLL версии 3.0.5300.0), благодаря которому я могу создать файл SDF с помощью служебной программы на 32-разрядной машине Windows XP, но с использованием одного и того же скомпилированного кода и библиотек DLL на моей машине Win 7 Dev & Автономная машина Win 8 не позволит правильно запрашивать базу данных на устройстве.

Скажем например.

SELECT Name FROM USERS WHERE Name = 'Joey'

Должен вернуть 1 результат из БД. Если он был скомпилирован на компьютере с Windows XP, он будет работать, если он скомпилирован на компьютере с Windows 7 / 8, он не будет прочитан, а набор результатов равен 0.

Это странное поведение, поскольку не все запросы выполняются. Если для одной и той же таблицы запрашивается другое предложение where, результат будет другим. Проверяя файл непосредственно в VS 2005 или используя утилиту, которую я написал для считывания файлов.SDF, я вижу, что запрос отлично работает как в Windows 7 / 8.

Казалось бы, это становится проблемой только после того, как файл SDF скопирован на устройство Windows 6.5. Он имеет те же библиотеки DLL, что и приложение, создавшее файл SQL Server CE v3.1 (версия DLL 3.0.5300.0).

Я проверил и вижу, что это не относится к архитектуре x64 / x32, так как это тот же результат при сборке на 32-битной или 64-битной машине Win 7 или Win XP.

В последнем посте я увидел некоторую краткую, но полезную информацию от MS ( http://blogs.msdn.com/b/sqlservercompact/archive/2009/04/01/after-moving-the-database-from-one-platform-to-other-the-first-sqlceconnection-open-takes-more-time.aspx)

Я ищу решение этой проблемы, но любая дополнительная информация может помочь, например... как проверить версию DLL, запущенную на устройстве (например, Модули), окно в Visual Studio действительно поможет.

1 ответ

Решение

Если вам когда-либо приходилось сталкиваться с такой ранней версией SQL Server CE (< 3.0.5300.0), это интересная проблема. Хотя в то время это было ограничением, требовалось время, чтобы выработать решение.

Я перепроверил все на устройстве. Теперь, когда в пакет установщика была включена правильная DLL для 3.0.5300.0, они не были скопированы в каталог приложения "$\DEVICE\Program Files\My Application". Чтобы я мог скомпилировать базу данных в Windows 7 /8 и заставить эту базу данных работать на устройстве Windows 6.5, мне пришлось вручную убедиться, что правильные файлы были как в настольном приложении, так и на устройстве Windows.

Файлы, которые я включил в оба приложения, были следующими:

  • sqlceca30.dll
  • sqlcecompact30.dll
  • sqlceer30EN.dll
  • sqlceme30.dll
  • sqlceoledb30.dll
  • sqlceqp30.dll
  • sqlcese30.dll
  • System.Data.SqlServerCe.dll

Они имеют версию 3.0.5300.0 и дату изменения от 22.12.2006, и я получил их из "C:\Program Files (x86)\Microsoft SQL Server Compact Edition\v3.1" при компиляции под любой более ранней версией (для меня все равно) не удалось.

Надеюсь, что это поможет кому-то еще, кто может застрять в этом, поскольку я не видел там много.

Другие вопросы по тегам