Не удается загрузить собственные компоненты 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

Я просто предоставил Read & Execute и список содержимого папки разрешения и теперь он работает как шарм.


существует два способа развертывания SQL Server CE 4.0 в ASP.net - ...

  1. среднее доверие, или

  2. частная развертывания.

ваш файл конфигурации использует версию 4.0.0.0 -

<add assembly="System.Data.SqlServerCe, Version=4.0.0.0,
            Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>

это требует среднего доверия и требует, чтобы пользователь пула приложений имел разрешение на доступ к библиотекам SQL Server Compact COM в C:\Program Files\Microsoft SQL Server Compact Edition.

в случае сбоя среднего доверия вы можете попробовать частное развертывание. Это мое предпочтение и есть меньше шансов что-то пойдет не так с вашей системы в будущем.

если вы приватно развертываете библиотеки DLL SQL Server CE, копируя все файлы v4.0\Private до bin\, убедитесь, что ваш веб.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>

База знаний Microsoft здесь 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, который я пытался открыть, имел пароль.