Невозможно загрузить собственные компоненты SQL Server Compact - PullRequest
14 голосов
/ 21 июля 2011

Я установил SQL Server Compact Edition 4.0 на Win7 x64, и он работает как для Asp.Net, так и для настольных приложений. На этом компьютере также установлена ​​Visual Studio 2010 SP1. Но мой Server 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 здесь , но без эффекта.

Ответы [ 7 ]

10 голосов
/ 31 июля 2011

Наконец-то появился 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

Я только что предоставил разрешения «Чтение и выполнение» и «Список содержимого папки», и теперь он работает как шарм.

3 голосов
/ 19 декабря 2012

Существует два способа развертывания 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"/>

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

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

Если вы развернете частную библиотеку DLL SQL Server CE, скопировав все файлы в v4.0\Private to 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>
2 голосов
/ 04 октября 2011

Я обнаружил совершенно не связанную проблему, которая могла вызвать это сообщение об ошибке, поэтому я публикую ссылку здесь для всех, кто приехал сюда из Google.Это заняло около трех или четырех часов вчерашней ночи, и мне в конечном итоге пришлось пройтись по декомпилированным двоичным файлам SqlServerCe, так что, надеюсь, это поможет вам: Определенные символы в пути приложения не позволяют SQL Server Compact загружать .

2 голосов
/ 31 июля 2011

База знаний Microsoft здесь http://support.microsoft.com/kb/974247/en-us говорит это:

В любой момент времени, правильное состояние 64-битного компьютера, для SQL Server Compact будет следующее: x86 и amd64 MSI установлены. MSI x86 и amd64 имеют одинаковую версию.

Поэтому, если вы столкнулись с подобными проблемами, убедитесь, что компьютер имеет как x86, так и amd64 MSI Compact, и они имеют та же версия. В случае, если они не, то установите Compact SP2 x86 и x64 MSI из следующей ссылки по мере необходимости: http://www.microsoft.com/downloads/details.aspx?familyid=E497988A-C93A-404C-B161-3A0B323DCE24&displaylang=en

1 голос
/ 21 июля 2011

На вашем сервере установлена ​​бета-версия SQL CE 4.0? Выберите «Установка и удаление программ» для информации о версии.

0 голосов
/ 04 апреля 2016

У меня была та же ошибка: «Невозможно загрузить собственные компоненты SQL Server Compact»

Я использовал встроенные объекты Try Catch и решил проблему.Файл sdf, который я пытался открыть, имел пароль.

0 голосов
/ 30 августа 2013

Я только что обновил SQL CE 3.5 до 4.0, загрузив новую версию с Microsoft .После этого я получил сообщение об ошибке, которое привело меня сюда.Для меня решением было установить SQL CE 4.0 для EntityFramework, используя менеджер пакетов NuGet.Так что только установка бинарных файлов с веб-сайта не помогла мне!

...