2012年6月12日 星期二

如何處理 SQL Server Compact 的資料庫

        SQL Server的應用非常的廣泛,也有不同的版本提供使用者進行選擇,而在智慧型裝置上由於硬體上的限制,所以可以安裝的軟體就會與一般桌上型電腦的軟體不同,而SQL Server Compact就是專門開發出應用在此領域上的軟體。

SQL Server Compact 3.5 的概觀
-----------------------------------------------------------------------------------------------
SQL Server Compact 3.5 是裝置應用程式的理想資料庫,因為其中提供:
  • 輕量型作業 (是在處理序中執行的,且在裝置上只需要 2MB 安裝空間)。
  • SQL Server 查詢程式設計功能的豐富子集。
  • SQL Server 資料型別豐富而一致的子集。
  • ADO.NET 和 OLE DB 的支援。
  • 使用 .sdf 資料庫檔案的本機資料存放。

會特別介紹到這一篇主要由於最近同事有需要將SQL Server Compact的檔案轉到SQL Server中進行資料的匯整,所以與我討論是否有較合適的方式,本來想說可以透過SSIS(SQL Server Integration Services) 來進行匯入匯出(Import/Output),但可惜的是,SQL Server Compact只能當成目的端,無法變成來源端,也就是只能將資料匯入SQL Server Compact,但是無法匯出,如下圖。


後來我找到了一個好方法,在此分享給大家,我將個人的方法整理如下,再請參考。


1、透過SQL Server Management Studio連線到 SQL Server Compact。
1-1 請先安裝 SQL Server Compact 套件

Microsoft SQL Server Compact 4.0
http://www.microsoft.com/en-us/download/details.aspx?id=17876
Microsoft SQL Server Compact 3.5 Service Pack 2 for Windows Desktop
http://www.microsoft.com/en-us/download/details.aspx?id=5783

1-2 開啟 SQL Server Management Studio,在Server type的地方請選擇 [SQL Server Compact] ,然後Database file請輸入你存放 SDF (SQL Server Compact檔案的附檔名) 的檔案位置。

1-3 連線完成後,你就可以透過 SQL 語法存取此檔案。

由於內建的功能無法將SDF的檔案匯入到SQL Server中,所以我們要再安裝下列的套件,然後你就可以透過SQL Server Management Studio進行。


2、安裝整合套件
2-1 請下載並安裝下列的檔案。

SQL Compact data and schema script utility
http://exportsqlce.codeplex.com/releases/view/80551



2-2 安裝完成後,您再次啟動SQL Server Management Studio,你就可以看到可以透過此工具將檔案與資料轉成SQL的語法進行匯出了。




最後由於資料都是採取全部匯出的方式,所以有必須進行差異比對時,就必須在匯入後再進行處理即可,或許有其他更好的軟體或處理方式,希望大家也不吝分享了,謝謝。


參考連結:
使用 SQL Server Compact 3.5 資料庫 (裝置)
http://msdn.microsoft.com/zh-tw/library/aa983313(v=vs.90).aspx
SQL Compact data and schema script utility
http://exportsqlce.codeplex.com/


關鍵字:SQL ServerSQL Server CompactSDF

2 則留言:

  1. 大師,請教一下,手邊有別人的.NET程式讀取local 的.sdf 資料庫檔案,如果把.sdf資料檔轉入SQL Server,原本的.NET程式可以透過什麼方式設定後,直接改抓SQL Server上的資料嗎?

    回覆刪除
    回覆
    1. 在.net程式的部份,你可以嘗試確認目前.net中的的連線字串,基本上會放在配置檔中,再將Data Source的位置改指回你的SQL Server即可。

      SQL Compact ConnectionString
      https://www.connectionstrings.com/sql-server-compact/

      SQL Server ConnectionString
      https://www.connectionstrings.com/sql-server/

      刪除