БД 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" при компиляции под любой более ранней версией (для меня все равно) не удалось.
Надеюсь, что это поможет кому-то еще, кто может застрять в этом, поскольку я не видел там много.