我尝试将加密的数据库还原为未加密的数据库。我通过将piDbEncOpts设置为SQL_ENCRYPT_DB_NO进行了更改,但还原仍然失败。是否有db2示例代码,我可以在其中检查如何在DB2中设置“NO Encrypt”选项。我将添加以下代码片段。数据库加密选项=数据库加密
v1uwarro1#
如果使用正确,名为db2Restore的“C”API将把加密的映像恢复到未加密的数据库。您可以使用IBM示例文件的修改版本:dbrestore.sqc和相关文件,以了解如何执行此操作。根据您的'C'编译器版本和设置,您可能会从IBM的代码中得到很多警告,因为随着时间的推移,IBM似乎没有维护他们的示例代码。但是,您不需要运行IBM的示例代码,您可以研究它来了解如何修复您自己的C代码。如果已安装,示例组件必须与您的Db2-server版本+修复包匹配,并且您必须使用Db2-server版本+修复包附带的C include文件来获取相关定义。对IBM示例代码的修改包括:
db2Restore
dbrestore.sqc
db2Version1113
db2Restore(db2Version1113, &restoreStruct, &sqlca);
iOptions
DB2RESTORE_NOENCRYPT
restoreStruct.iOptions = DB2RESTORE_OFFLINE | DB2RESTORE_DB | DB2RESTORE_NODATALINK | DB2RESTORE_NOROLLFWD | DB2RESTORE_NOENCRYPT;
我使用Db2 v11.1.4.6(API中的db2 Version 1113)和gcc 9.3进行了测试。我还使用gcc 9.3测试了Db2 v11.5(API中的db2 Version 11500)。
1条答案
按热度按时间v1uwarro1#
如果使用正确,名为
db2Restore
的“C”API将把加密的映像恢复到未加密的数据库。您可以使用IBM示例文件的修改版本:
dbrestore.sqc
和相关文件,以了解如何执行此操作。根据您的'C'编译器版本和设置,您可能会从IBM的代码中得到很多警告,因为随着时间的推移,IBM似乎没有维护他们的示例代码。但是,您不需要运行IBM的示例代码,您可以研究它来了解如何修复您自己的C代码。
如果已安装,示例组件必须与您的Db2-server版本+修复包匹配,并且您必须使用Db2-server版本+修复包附带的C include文件来获取相关定义。
对IBM示例代码的修改包括:
db2Version1113
,如下所示:db2Restore(db2Version1113, &restoreStruct, &sqlca);
iOptions
字段时:启用标志DB2RESTORE_NOENCRYPT
,例如,在IBM的示例中,包括附加标志:restoreStruct.iOptions = DB2RESTORE_OFFLINE | DB2RESTORE_DB | DB2RESTORE_NODATALINK | DB2RESTORE_NOROLLFWD | DB2RESTORE_NOENCRYPT;
我使用Db2 v11.1.4.6(API中的db2 Version 1113)和gcc 9.3进行了测试。
我还使用gcc 9.3测试了Db2 v11.5(API中的db2 Version 11500)。