2011-07-21 37 views
14

Tôi đã cài đặt SQL Server Compact Edition 4.0 trên Win7 x64 và nó chạy cả cho ứng dụng Asp.Net và Desktop. PC này cũng đã cài đặt Visual Studio 2010 SP1. Nhưng Server 2008 R2 của tôi tạo lỗi sau cho các ứng dụng Asp.Net, mặc dù nó có thể chạy Ứng dụng Desktop:Không thể tải các thành phần gốc của SQL Server Compact

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. 

Tôi đã thử cả hai với SqlDataSource và SqlCeConnection. Lỗi tương tự. web.config của tôi là như dưới đây:

<?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> 

Cũng cố gắng bắt chước của dll như sugested here nhưng không có tác dụng.

Trả lời

10

Cuối cùng có SQL Server Compact Edition 4.0 làm việc theo IIS 7.5. Vấn đề là vấn đề quyền. bản sắc hiện Application Pool của IWAM_plesk (mặc định) không có quyền truy cập vào SQL Server Compact 4.0 thư mục:

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

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

Tôi chỉ được cấp quyền Đọc và cho phép các nội dung trong Thư mục Danh sách và bây giờ nó hoạt động như một sự quyến rũ.

1

Máy chủ của bạn có cài đặt phiên bản beta của SQL CE 4.0 không? Chọn Thêm/Loại bỏ Chương trình để biết thông tin phiên bản.

+0

Không, chỉ có: Compact 4.0 x64 ENU, Compact 4.0 x64 Công cụ Web ENU, Compact 3.5 SP2 ENU, Công cụ truy vấn nhỏ gọn 3.5 SP2 ENU, Compact 3.5 SP2 x64 ENU. –

+0

Có nhưng phiên bản nào (bấm nút Hỗ trợ) – ErikEJ

2

Microsoft Knowledge Base đây http://support.microsoft.com/kb/974247/en-us nói điều này:

Tại bất kỳ điểm nào của thời gian, trạng thái đúng của một máy tính 64-bit, cho SQL Server Compact, sẽ là như sau: Cả hai x86 và amd64 Các MSI được cài đặt. Cả hai MSI x86 và amd64 đều có cùng phiên bản.

Vì vậy, nếu bạn gặp phải bất kỳ vấn đề tương tự nào, hãy đảm bảo rằng máy tính có cả hai x86 và amd64 MSIs Compact được cài đặt và chúng là cùng phiên bản. Trong trường hợp, họ không, sau đó cài đặt nhỏ gọn SP2 x86 và x64 MSIs từ liên kết sau đây là cần thiết: http://www.microsoft.com/downloads/details.aspx?familyid=E497988A-C93A-404C-B161-3A0B323DCE24&displaylang=en

+3

Các tệp đó được bao gồm trong gói SqlServerCompact.4.0.8482.1 của NuGet. Các thư mục x86 và amd64 trong thư mục NativeBinaries được yêu cầu trong cùng thư mục với System.Data.SqlServerCe.dll. – Grastveit

+0

@Grastveit Cảm ơn, đã hoạt động hoàn hảo với triển khai xcopy. –

2

Tôi đã phát hiện ra một vấn đề hoàn toàn không liên quan có thể gây ra thông báo lỗi này, vì vậy tôi đăng một liên kết ở đây cho bất kỳ ai đến đây từ Google. Điều này ăn tối khoảng ba hoặc bốn giờ của đêm qua, và cuối cùng tôi đã phải bước qua các nhị phân SqlServerCe nhị phân, vì vậy hy vọng điều này sẽ giúp bạn: Certain symbols in application path prevent SQL Server Compact from loading.

3

Có hai cách để triển khai SQL Server CE 4.0 trong ASP.net.

  1. tín nhiệm trung bình, hoặc

  2. triển khai tư nhân.

Tệp cấu hình của bạn sử dụng phiên bản 4.0.0.0 -

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

này đòi hỏi Medium Trust, và đòi hỏi sự App bơi người dùng có quyền truy cập các file dll của SQL Server Compact COM trong C:\Program Files\Microsoft SQL Server Compact Edition.

Trường hợp tin cậy trung bình không thành công, bạn có thể thử triển khai riêng tư. Đây là sở thích của tôi và ít có khả năng sẽ có sự cố với hệ thống của bạn trong tương lai.

Nếu bạn tin triển khai các DLL CE SQL Server, bằng cách sao chép tất cả các tập tin trong v4.0\Private để bin\, hãy chắc chắn Web.config của bạn khai báo một sự phụ thuộc vào phiên bản 4.0.0.1. Phiên bản này không được triển khai trong GAC và điều này sẽ đảm bảo bản sao riêng của bạn được tải.

<system.web> 
<compilation> 
    <assemblies> 
    <add assembly="System.Data.SqlServerCe, Version=4.0.0.1, 
      Culture=neutral, PublicKeyToken=89845dcd8080cc91"/> 
    </assemblies> 
</compilation> 
</system.web> 

Bạn cũng sẽ đòi hỏi một sự thay đổi tương ứng trong phần DbProvider trong 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> 
0

Tôi chỉ nâng cấp từ SQL CE 3,5-4,0, bằng cách tải về một phiên bản mới từ Microsoft. Sau khi thực hiện việc này, tôi nhận được thông báo lỗi đưa tôi đến đây. Đối với tôi giải pháp là cài đặt SQL CE 4.0 cho EntityFramework, bằng cách sử dụng trình quản lý gói NuGet. Vì vậy, chỉ cài đặt các tập tin nhị phân từ trang web đã không làm các trick cho tôi!

+0

Bạn xứng đáng được cảm ơn của tôi! –

0

Tôi đã có lỗi tương tự 'Không thể tải các thành phần gốc của SQL Server Compact'

Tôi đã sử dụng đối tượng Try Inbuilt sẵn và giải quyết được sự cố. Các tập tin sdf những gì tôi đã cố gắng để mở có một mật khẩu.

Các vấn đề liên quan