Не удается загрузить собственные компоненты 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. Та же ошибка. Моя паутина.конфигурация выглядит следующим образом:
<?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 здесь, но никакого эффекта.
7 ответов:
Наконец-то получил SQL Server Compact Edition 4.0, работающий под управлением IIS 7.5. Проблема заключалась в разрешении вопроса. Текущий идентификатор пула приложений IWAM_plesk (по умолчанию) не имел доступа к папкам SQL Server Compact 4.0:
C:\Program файлы\Microsoft SQL Server Compact Edition\v4.0
C:\Program файлы (x86)\Microsoft SQL Server Compact Edition\v4.0
Я только что предоставил разрешения на чтение и выполнение и список содержимого папок, и теперь он работает как очарование.
Существует два способа развертывания 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>
База знаний Майкрософт здесь http://support.microsoft.com/kb/974247/en-us говорит так:
В любой заданный момент времени правильное состояние 64-разрядного компьютера, для SQL Server Compact это будет выглядеть следующим образом: как x86, так и amd64 Установленных МСУ являются. Как x86, так и amd64 MSIs имеют одну и ту же версию.
Поэтому, если вы столкнулись с аналогичными проблемами, убедитесь, что компьютер имеет как x86, так и amd64 MSIs Compact установлены, и они тот же версия. В случае, если их нет, то установите Compact SP2 x86 и x64 MSIs из следующей ссылки по мере необходимости: http://www.microsoft.com/downloads/details.aspx?familyid=E497988A-C93A-404C-B161-3A0B323DCE24&displaylang=en
Я обнаружил совершенно не связанную проблему, которая вызвала бы это сообщение об ошибке, поэтому я размещаю ссылку здесь для всех, кто прибыл сюда из Google. Это съело около трех или четырех часов прошлой ночи, и мне в конечном итоге пришлось пройти через декомпилированные двоичные файлы SqlServerCe, так что, надеюсь, это поможет вам: определенные символы в пути приложения предотвращают загрузку SQL Server Compact.
На вашем сервере установлена бета-версия SQL CE 4.0? Проверьте установку и удаление программ для получения информации о версии.
Я только что обновил SQL CE 3.5 до 4.0, загрузив новую версию из Microsoft. После этого я получил сообщение об ошибке, которое привело меня сюда. Для меня решением было также установить SQL CE 4.0 для EntityFramework, используя диспетчер пакетов NuGet. Так что только установка двоичных файлов с сайта не сделала трюк для меня!
У меня была та же ошибка "не удалось загрузить собственные компоненты SQL Server Compact"
Я использовал встроенные объекты Try Catch и решил проблему. Файл sdf, который я пытался открыть, имел пароль.
Comments