14

Win7 x64 に SQL Server Compact Edition 4.0 をインストールしましたが、Asp.Net とデスクトップ アプリケーションの両方で実行されます。この PC には 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をコピーしようとしましたが、効果はありません。

4

7 に答える 7

10

最後に、IIS 7.5 で動作する SQL Server Compact Edition 4.0 を取得しました。問題は許可の問題でした。現在のアプリケーション プールの ID 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

読み取りと実行、およびフォルダーの内容の一覧表示のアクセス許可を付与したところ、魅力的に機能するようになりました。

于 2011-07-31T08:38:30.910 に答える
4

ASP.netにSQLServerCE4.0を展開する方法は2つあります。

  1. 中程度の信頼、または

  2. プライベート展開。

構成ファイルはバージョン4.0.0.0を使用します-

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

これには中程度の信頼が必要であり、AppPoolユーザーがのSQLServer CompactCOMdllにアクセスするためのアクセス許可を持っている必要がありますC:\Program Files\Microsoft SQL Server Compact Edition

中程度の信頼が失敗した場合は、プライベート展開を試みることができます。これは私の好みであり、将来、システムに問題が発生する可能性は低くなります。

SQL Server CE DLLをプライベート展開する場合は、すべてのファイルをに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>

また、Web.configのDbProviderセクションで対応する変更が必要になります

<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>
于 2012-12-19T07:54:59.967 に答える
2

ここのマイクロソフトナレッジベースhttp://support.microsoft.com/kb/974247/en-usはこれを言います:

任意の時点で、SQL ServerCompactの64ビットコンピューターの正しい状態は次のようになります。x86とamd64の両方のMSIがインストールされている。x86とamd64の両方のMSIは同じバージョンです。

したがって、同様の問題が発生した場合は、コンピューターにx86とamd64の両方のCompactのMSIがインストールされており、それらが同じバージョンであることを確認してください。そうでない場合は、必要に応じて次のリンクからCompact SP2x86およびx64MSIをインストールします。http: //www.microsoft.com/downloads/details.aspx? familyid = E497988A-C93A-404C-B161-3A0B323DCE24&displaylang = en

于 2011-07-31T06:30:07.190 に答える
2

このエラー メッセージの原因となるまったく関係のない問題を発見したので、Google からここにたどり着いたすべての人のために、ここにリンクを投稿します。これは昨夜の約 3 ~ 4 時間を費やし、最終的に逆コンパイルされた SqlServerCe バイナリをステップ実行する必要があったため、これが役立つことを願っています

于 2011-10-04T15:21:29.387 に答える
2

サーバーに SQL CE 4.0 のベータ版がインストールされていますか? バージョン情報については、プログラムの追加と削除を確認してください。

于 2011-07-21T09:37:21.013 に答える
0

「SQL Server Compact のネイティブ コンポーネントを読み込めません」という同じエラーが発生しました

Try Catch 組み込みオブジェクトを使用して問題を解決しました。私が開こうとしたsdfファイルにはパスワードがありました。

于 2016-04-04T12:33:13.183 に答える