web-dev-qa-db-ja.com

SQL ServerCompactのネイティブコンポーネントを読み込めません

Win7x64にSQLServer Compact Edition 4.0をインストールしましたが、Asp.Netとデスクトップアプリケーションの両方で実行されます。このPCには、Visual Studio 2010SP1もインストールされています。しかし、私の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をサジェストとしてコピーしようとしました ここ が効果はありません。

14
HasanG

最終的にSQLServer Compact Edition4.0がIIS 7.5で動作するようになりました。問題はアクセス許可の問題でした。現在アプリケーションプールのID IWAM_plesk(デフォルト)はSQLServerにアクセスできませんでしたCompact 4.0フォルダー:

C:\ Program Files\Microsoft SQL Server Compact Edition\v4.

C:\ Program Files(x86)\ Microsoft SQL Server Compact Edition\v4.

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

10
HasanG

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

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

  2. プライベート展開。

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

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

これには中程度の信頼が必要であり、C:\Program Files\Microsoft SQL Server Compact Edition内のSQLServer Compact COMd​​llにアクセスする権限を持つAppPoolユーザーが必要です。

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

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>
3
Chui Tey

ここのマイクロソフトサポート技術情報 http://support.Microsoft.com/kb/974247/en-us は次のように述べています。

任意の時点で、SQL Server Compactの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

2
Simon Mourier

このエラーメッセージの原因となるまったく関係のない問題を発見したので、Googleからここに到着した人のためにここにリンクを投稿します。これは昨夜の約3〜4時間かかり、最終的には逆コンパイルされたSqlServerCeバイナリをステップ実行する必要があったため、これが役立つことを願っています。 アプリケーションパス内の特定のシンボルにより、SQL Server Compactが読み込まれません

2
Steve Rukuts

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

1
ErikEJ

同じエラーが発生しました 'SQL ServerCompactのネイティブコンポーネントを読み込めません'

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

0

Microsoft から新しいバージョンをダウンロードして、SQL CE3.5から4.0にアップグレードしました。これを行った後、私はここに私を連れて来たエラーメッセージを受け取りました。私にとっての解決策は、NuGetパッケージマネージャーを使用して、EntityFramework用のSQL CE4.0もインストールすることでした。したがって、Webサイトからバイナリをインストールするだけでは、うまくいきませんでした。

0