Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - SQL 参考 » 使用 SQL » SQL 语句 » SQL 语句 (A-D)

 

CREATE ENCRYPTED FILE 语句

为数据库文件、事务日志、事务日志镜像或 dbspace 创建一个高度加密的副本。

语法
CREATE ENCRYPTED FILE newfile
FROM oldfile
{ KEY key | KEY key OLD KEY oldkey }
[ ALGORITHM { 
   'AES' 
   | 'AES256' 
   | 'AES_FIPS' 
   | 'AES256_FIPS' } ]
参数
  • FROM 子句   指定要在其上执行 CREATE ENCRYPTED FILE 语句的现有文件 (oldfile) 的名称。

  • KEY 子句   指定要使用的加密密钥。

  • OLD KEY 子句   指定用于加密文件的当前密钥。

  • ALGORITHM 子句   指定用于加密文件的算法。如果未指定算法,将使用缺省的 AES(128 位加密)算法。

注释

当您的数据库需要恢复以及出于支持的原因需要为数据库创建加密副本时,请使用此语句。还必须要使用此语句对任何与数据库相关的文件(例如事务日志、事务日志镜像或 dbspace 文件)进行加密。

对与数据库相关的文件进行加密时,必须对与该同一数据库相关的所有文件指定同一算法和密钥。

如果 oldfile 有 dbspace 或日志与其相关联,且您还要对它们进行加密,则必须确保这些文件的新名称和位置与新数据库存储在一起。为此,请:

  • 对新数据库运行 dblog -t 以更改事务日志的名称和位置

  • 对新数据库运行 dblog -m 以更改事务日志镜像的名称和位置

  • 对新数据库执行 ALTER DBSPACE 语句以更改 dbspace 文件的位置和名称

可使用此语句来更改数据库的加密算法和密钥。不过,CREATE ENCRYPTED FILE 语句会生成一个新文件 (newfile),而不是替换或移除先前版本的文件 (oldfile)。

在上述过程中,事务日志文件的名称保持不变。因此,如果数据库和事务日志文件被重命名,则需要对得到的数据库运行 dblog -t 命令。

通过卸载数据库然后联合使用 dbunload -an 选项与 -ek 或 -ep 重装数据库,还可以加密现有数据库或更改现有加密密钥。

如果具有已启用表加密的数据库,则无法使用此语句对数据库进行加密。但是,可以使用此语句更改用于表加密的密钥。要对已启用表加密的数据库进行加密,请使用 CREATE ENCRYPTED DATABASE 语句。请参见CREATE ENCRYPTED DATABASE 语句

此语句在过程、触发器、事件或批处理中不受支持。

注意

并非所有平台上都可以使用 FIPS。有关受支持的平台的列表,请参见 [external link] http://www.sybase.com/detail?id=1062617

权限

必须是具有 DBA 权限的用户。

在 Windows Mobile 上,仅 ARM 处理器支持 AES_FIPS 和 AES256_FIPS 算法。

副作用

无。

另请参见
标准和兼容性
  • SQL/2003   服务商扩充。

示例

下面的示例加密 contacts 数据库,并创建一个用 AES_FIPS 加密技术加密的名为 contacts2 的新数据库。

CREATE ENCRYPTED FILE 'contacts2.db'
FROM 'contacts.db'
   KEY 'Sd8f6654*Mnn'
   ALGORITHM AES_FIPS;

以下示例加密 contacts 数据库和 contacts 日志文件,并重命名这两个文件。您需要运行 dblog -ek Sd8f6654*Mnn -t contacts2.log contacts.db,因为虽然日志已重命名,但数据库文件仍指向旧的日志。

CREATE ENCRYPTED FILE 'contacts2.db'
   FROM 'contacts.db'
   KEY 'Sd8f6654*Mnn';
CREATE ENCRYPTED FILE 'contacts2.log'
   FROM 'contacts.db'
   KEY 'Sd8f6654*Mnn';

以下示例加密 contacts 数据库和 contacts 日志文件,以使原始日志文件名保持不变。在这种情况下,不需要运行 dblog,因为文件的名称并未改变。

CREATE ENCRYPTED FILE 'newpath\contacts.db'
   FROM 'contacts.db'
   KEY 'Sd8f6654*Mnn';
CREATE ENCRYPTED FILE 'newpath\contacts.log'
   FROM 'contacts.log'
   KEY 'Sd8f6654*Mnn';

若要更改数据库的加密密钥,首先使用新的密钥创建数据库文件的副本,如以下语句中所示:

CREATE ENCRYPTED FILE 'newcontacts.db'
 FROM 'contacts.db' 
 KEY 'newkey' OLD KEY 'oldkey';

加密文件创建完成后,删除 contacts.db 然后将 newcontacts.db 重命名为 contacts.db