使用密码保护数据库

SQL Server Compact 数据库引擎允许在访问本地数据库时强制要求提供密码。在 SQL Server Compact 3.5 中,密码是针对受保护的数据库创建的。密码并不是针对数据库的每位用户而创建的。SQL Server Compact 3.5 数据库的密码应该为 Strong Passwords(强密码)。

  • 最长可以为 40 个字符。
  • 可以包含字母、符号、数字或它们的任意组合。
  • 不可恢复。

备注

密码不会防止以明文形式读取数据库文件中的任何数据。通过使用加密与密码,您可以用加密格式存储数据,并限制以编程方式访问数据库。

创建受密码保护的数据库

通过在创建数据库时提供密码属性,即可创建受密码保护的数据库。创建受密码保护的数据库的方法有:

  • 使用 SQL 语法
    若要使用 SQL 语法创建受密码保护的数据库,请在 CREATE DATABASE 语句中指定数据库密码。密码必须跟在 DATABASEPASSWORD 关键字后,并包含在单引号内,如下例所示:

    CREATE DATABASE "secure.sdf" 
    DATABASEPASSWORD '<enterStrongPasswordHere>'
    
  • 使用 ADO.NET
    若要通过使用 SqlCeEngine.CreateDatabase 方法创建受密码保护的数据库,则必须在连接字符串中指定密码属性,如下例所示:

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

    有关更多信息,请参见 Visual Studio 的 .NET Compact Framework 软件开发工具包 (SDK) 中的 System.Data.SqlServerCe.SqlCeEngine 类。

  • 使用 OLE DB
    若要通过使用 OLE DB Provider for SQL Server Compact 3.5 创建加密数据库,您必须将提供程序特定的属性 DBPROP_SSCE_ENCRYPTDATABASE 设为 VARIANT_TRUE,并使用提供程序特定的属性 DBPROP_SSCE_DBPASSWORD 指定密码。

访问受密码保护的数据库

必须输入密码才能打开受密码保护的数据库。访问受密码保护的数据库的方法有:

  • 使用 SQL Server Compact 3.5 的数据提供程序
    若要通过使用 SqlCeConnection.Open 方法访问受密码保护的数据库,您必须在连接字符串中指定密码属性。例如:

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

    有关更多信息,请参见 Visual Studio 的 .NET Compact Framework SDK 中的 System.Data.SqlServerCe.SqlCeConnection 类。

  • 使用 OLE DB
    SQL Server Compact 3.5 支持的文件级访问控制机制要求在访问受密码保护的 SQL Server Compact 3.5 数据库时必须提供密码。每次打开数据库时都必须输入密码。使用 DBPROPSET_SSCE_DBINIT 提供程序特定属性集中的 DBPROP_SSCE_DBPASSWORD 属性可指定密码。在创建数据库时,可以使用此属性为数据库指定数据库密码。加密数据库始终是受密码保护的。