加密資料庫

SQL Server Compact 4.0 的 Database Engine 可讓您加密資料庫。加密的資料庫也會以資料庫密碼保護。

重要

由於加密的資料庫必須使用密碼才能存取,如果密碼遺失,將無法復原資料。

加密模式

SQL Server Compact 4.0 支援下列加密資料庫的加密模式。新的密碼編譯演算法 (結合加密和雜湊) 會對應至這些加密模式。

所有支援 SQL Server Compact 4.0 的平台上都提供進階加密標準 (AES),可使用 128 位元和 256 位元的金鑰長度進行加密。安全雜湊演算法 (SHA) 可使用 256 位元和 512 位元的金鑰長度進行雜湊。

  1. Platform Default:這個模式所使用的演算法為 AES128_SHA256,其中 AES128 是使用 128 位元金鑰的加密演算法,而 SHA256 是使用 256 位元金鑰的雜湊演算法。這是所有支援 SQL Server Compact 4.0 的平台上的預設加密模式。

  2. Engine Default:在這個模式中,資料庫是使用 AES256_SHA512 加密,其中 AES256 是加密演算法,而 SHA512 是安全雜湊演算法。使用預設金鑰長度的目的在於顧全與 SQL Server Compact 3.5 的回溯相容性。

注意

您可以指定用於加密資料庫的加密類型,方法是將連接字串屬性 Encryption Mode, 設定為其中一個可用的加密模式:Platform Default 或 Engine Default。

建立加密的資料庫

在建立資料庫時提供加密屬性和密碼屬性,即可建立加密的資料庫。加密的資料庫可使用下列方式建立:

  • 使用 SQL 語法

    若要使用 SQL 語法建立加密的資料庫,請指定 database_password。這樣預設就會加密資料庫。加密模式將會是 Platform Default。例如:

    Create Database "secure.sdf" databasepassword '<password>' 
    
  • 使用 .NET Compact Framework 資料提供者

    若要使用 SqlCeEngine.CreateDatabase 方法建立密碼保護的資料庫,則必須在連接字串中指定密碼屬性。例如:

    "data source=\secure.sdf;encryption mode=platform default;password=<enterStrongPasswordHere>;
    

    如需詳細資訊,請參閱 MicrosoftVisual Studio 文件集中的 System.Data.SqlServerCe.SqlCeEngine 類別。

  • 使用 OLE DB

    若要使用 SQL Server Compact 的 OLE DB 提供者建立加密的資料庫,您必須使用提供者特定的屬性 DBPROP_SSCE_ENCRYPTIONMODE 指定加密模式,並且使用提供者特定的屬性 DBPROP_SSCE_DBPASSWORD 指定密碼。

存取加密的資料庫

您必須提供密碼才能開啟加密的資料庫。加密的資料庫可使用下列方法存取:

  • 使用 SQL Server Compact 的資料提供者

    若要使用 SqlCeConnection.Open 方法存取密碼保護的資料庫,必須在連接字串中指定密碼屬性。例如:

    "data source=ssce.sdf; password=<enterStrongPasswordHere>"
    

    如需詳細資訊,請參閱 Visual Studio 文件集中的 System.Data.SqlServerCe.SqlCeConnection 類別。

  • 使用 OLE DB

    若要使用 OLE DB 開啟密碼保護的資料庫,則必須指定提供者特定的屬性 DBPROP_SSCE_DBPASSWORD。

注意

如果您嘗試開啟使用舊版 SQL Server Compact 建立的資料庫檔案,就會收到無法開啟檔案的訊息。這是因為 SQL Server Compact 4.0 的資料庫檔案格式與舊版不同。若要使用 SQL Server Compact 4.0 開啟資料庫檔案,必須先升級資料庫檔案。

您可以將 SQL Server Compact 3.1/3.5 資料庫升級為 SQL Server Compact 4.0 資料庫,但無法升級 SQL Server Compact 2.0。如需詳細資訊,請參閱<從舊版升級 (SQL Server Compact)

請參閱

工作

如何:維護資料庫安全 (Visual Studio)