搜尋本站文章

2008-10-19

【已經解決】:x64 環境開發 SQL Server Compact 3.5 遇到問題:無法載入 DLL 'sqlceme35.dll': 找不到指定的模組。請安裝 SQL Server Compact 3.5 SP1 即可解決此問題。





文章更新 2008/12/27:

感謝朋友「天涯」的分享解決方案:

在 SQL Server Compact 3.5 版本,並未支援 64 位元程式開發。但是在 SQL Server Compact 3.5 SP1 上,就有支援 64 位元程式開發。

以下是關於 SQL Server Compact 3.5 SP1 的相關資訊:
Microsoft SQL Server Compact 3.5 Service Pack 1 和適用於 Windows 桌上型電腦的 Synchronization Services for ADO.NET 1.0 版 Service Pack 1

版本: 3.5.5692.0
發佈日期: 2008/8/6
可下載的程式:
SSCERuntime-CHT-x64.msi
SSCERuntime-CHT-x86.msi

下載網址:
Microsoft SQL Server Compact 3.5 Service Pack 1 和適用於 Windows 桌上型電腦的 Synchronization Services for ADO.NET 1.0 版 Service Pack 1
http://www.microsoft.com/downloads/details.aspx?displaylang=zh-tw&FamilyID=dc614aee-7e1c-4881-9c32-3a6ce53384d9

下載檔案 64位元版本:SSCERuntime-CHT-x64.msi

參考資料:
KB955965:Description of SQL Server Compact 3.5 Service Pack 1
http://support.microsoft.com/default.aspx?scid=KB;%5bLN%5d;955965

Microsoft SQL Server Compact 3.5 Service Pack 1 線上叢書和範例
http://www.microsoft.com/downloads/details.aspx?FamilyId=07829770-73A7-41E4-880D-E74B1A353623&displaylang=zh-tw





在使用 Visual Studio 2008 開發 SQL Server Compact 3.5 資料庫,可能會遇到以下的問題。

適用環境:
x64 版本的作業系統,例如:Vista、Windows Server 2008 等等。


遇到的錯誤訊息:



無法載入 DLL 'sqlceme35.dll': 找不到指定的模組。 (發生例外狀況於 HRESULT: 0x8007007E)

System.DllNotFoundException 未處理
Message="無法載入 DLL 'sqlceme35.dll': 找不到指定的模組。 (發生例外狀況於 HRESULT: 0x8007007E)"
Source="System.Data.SqlServerCe"
TypeName=""
StackTrace:
於 System.Data.SqlServerCe.NativeMethods.SafeRelease(IntPtr& ppUnknown)
於 System.Data.SqlServerCe.SqlCeCommand.ReleaseNativeInterfaces()
於 System.Data.SqlServerCe.SqlCeCommand.Finalize()
InnerException:


請參考下圖所示的錯誤:




可能的處理方式如下:
這可能是因為目前sqlceme35.dll等相關元件,尚未支援x64位元的版本。處理方式:
1. 在右邊的「方案總管」,點選先前建立的專案「資料同步服務」。
2. 滑鼠右鍵,選擇「屬性」。
3. 在左邊的專案屬性視窗內,點選「建置」頁面。
4. 在「平台目標」方塊,改選取為「x86」。

請參考下圖所示:


5. 點選上方的工作選單「檔案」\「全部儲存」,再關閉專案屬性的設定視窗。

參考文件:

SQL Server Compact 3.5 和 Visual Studio
http://msdn.microsoft.com/zh-tw/library/aa983341.aspx

64 位元程式開發 針對使用 Visual Studio 和 SQL Server Compact 3.5 進行的 64 位元程式開發,[進階編譯器設定] 中的 [目標 CPU] 選項必須明確設定為 [x86]。當 [目標 CPU] 設定為預設值 [任何 CPU] 時,將會出現「無法載入 sqlceme35.dll」這個訊息。因此請務必設定專案屬性中,[進階編譯器設定] 的 [目標 CPU] 選項。


HOW TO:連同應用程式部署 SQL Server Compact 3.5 資料庫
http://msdn.microsoft.com/zh-tw/library/aa983326.aspx


Unable to load DLL 'sqlceme35.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
http://forums.microsoft.com/msdn/showpost.aspx?postid=2616204&siteid=1&sb=0&d=1&at=7&ft=11&tf=0&pageid=0

x64 and SQL Compact
http://erikej.blogspot.com/2008/01/x64-and-sql-compact.html