Невозможно загрузить собственные компоненты SQL Server Compact
Я установил SQL Server Compact Edition 4.0 на Win7 x64, и он работает как для Asp.Net, так и для настольных приложений. На этом ПК также установлен Visual Studio 2010 SP1. Но мой сервер 2008 R2 вызывает следующую ошибку для приложений Asp.Net, хотя он может запускать приложения для настольных систем:
Unable to load the native components of SQL Server Compact corresponding to the
ADO.NET provider of version 8482. Install the correct version of SQL Server
Compact. Refer to KB article 974247 for more details.
Я пробовал оба с SqlDataSource и SqlCeConnection. Такая же ошибка. Мой web.config выглядит следующим образом:
<?xml version="1.0"?>
<configuration>
<connectionStrings>
<add name="SQLCE" connectionString="Data Source=|DataDirectory|\a.sdf"
providerName="System.Data.SqlServerCe.4.0" />
</connectionStrings>
<system.web>
<compilation debug="true" targetFramework="4.0">
<assemblies>
<add assembly="System.Data.SqlServerCe, Version=4.0.0.0,
Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
</assemblies>
</compilation>
</system.web>
</configuration>
Также попытался скопировать dll как sugested здесь, но не повлиял.
Ответы
Ответ 1
Наконец, SQL Server Compact Edition 4.0 работает под IIS 7.5. Проблема была связана с разрешением. Текущая Идентификатор пула приложений. IWAM_plesk (по умолчанию) не имел доступа к папкам SQL Server Compact 4.0:
C:\Program Files\Microsoft SQL Server Compact Edition\v4.0
C:\Program Files (x86)\Microsoft SQL Server Compact Edition\v4.0
Я только что предоставил разрешения чтения и выполнения и списка содержимого папки, и теперь он работает как прелесть.
Ответ 2
Существует два способа развертывания SQL Server CE 4.0 в ASP.net.
-
Среднее доверие или
-
частные развертывания.
В файле конфигурации используется версия 4.0.0.0 -
<add assembly="System.Data.SqlServerCe, Version=4.0.0.0,
Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
для этого требуется Среднее доверие и требуется, чтобы пользователь пула приложений имел разрешение на доступ к dll SQL Server Compact COM в C:\Program Files\Microsoft SQL Server Compact Edition
.
В случае неудачи среднего доверия вы можете попытаться выполнить частное развертывание. Это мое предпочтение, и меньше шансов что-то пойдет не так с вашей системой в будущем.
Если вы приватно развертываете DLL SQL Server CE, скопировав все файлы в v4.0\Private
в bin\
, убедитесь, что ваш Web.config объявляет зависимость от версии 4.0.0.1. Эта версия не развертывается в GAC, и это обеспечит загрузку вашей частной копии.
<system.web>
<compilation>
<assemblies>
<add assembly="System.Data.SqlServerCe, Version=4.0.0.1,
Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
</assemblies>
</compilation>
</system.web>
Вам также потребуется соответствующее изменение в разделе DbProvider в Web.config
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SqlServerCe.4.0" />
<!-- Use private copy 4.0.0.1 -->
<add invariant="System.Data.SqlServerCe.4.0"
name="Microsoft SQL Server Compact 4.0"
description=".NET Framework Data Provider for Microsoft SQL Server Compact"
type="System.Data.SqlServerCe.SqlCeProviderFactory,
System.Data.SqlServerCe,
Version=4.0.0.1,
Culture=neutral,
PublicKeyToken=89845dcd8080cc91" />
</DbProviderFactories>
</system.data>
Ответ 3
База знаний Microsoft здесь http://support.microsoft.com/kb/974247/en-us говорит следующее:
В любой заданный момент времени правильное состояние 64-разрядного компьютера, для SQL Server Compact, будет следующим: и x86, и amd64 MSI установлены. Оба x86 и amd64 MSI имеют одинаковую версию.
Поэтому, если вы сталкиваетесь с подобными проблемами, убедитесь, что компьютер установлены как x86, так и amd64 MSI Compact, и они той же версии. В случае, если они не установлены, установите Compact SP2 x86 и x64 MSI из следующей ссылки по мере необходимости: http://www.microsoft.com/downloads/details.aspx?familyid=E497988A-C93A-404C-B161-3A0B323DCE24&displaylang=en
Ответ 4
Я обнаружил совершенно несвязанную проблему, которая вызвала бы это сообщение об ошибке, поэтому я размещаю ссылку здесь для всех, кто приехал сюда из Google. Это вызвало около трех или четырех часов прошлой ночи, и мне в итоге пришлось пройти через декомпилированные двоичные файлы SqlServerCe, поэтому, надеюсь, это поможет вам: Определенные символы в приложении путь предотвращает загрузку SQL Server Compact.
Ответ 5
Установлен ли на сервере бета-версия SQL CE 4.0? Установите флажок "Установка и удаление программ" для информации о версии.
Ответ 6
Я только что обновил с SQL CE 3.5 до 4.0, загрузив новую версию из Microsoft.
После этого я получил сообщение об ошибке, которое привело меня сюда.
Для меня было решение установить SQL CE 4.0 для EntityFramework, используя диспетчер пакетов NuGet. Поэтому только установка двоичных файлов с веб-сайта не помогла мне!
Ответ 7
У меня была такая же ошибка: "Не удалось загрузить собственные компоненты SQL Server Compact"
Я использовал объекты Try Catch inbuilt и решил проблему. В sdf файле у меня был пароль.