从db2 Express-C迁移到Developer版本

时间:2018-04-10 13:40:40

标签: db2 db2-luw

我有来自db2 express-c 11.1版本的备份文件,我想将其恢复到db2开发人员版本(两者都在Windows机器上)。 RESTORE成功完成,我可以从db2命令行列出表

db2 list tables for schema XYZ

但是当我尝试访问数据时,我收到以下错误消息

SQL0551N  The statement failed because the authorization ID does not have the
required authorization or privilege to perform the operation.  Authorization
ID: "DB2USER".  Operation: "SELECT". Object: "XYZ.Table1".  SQLSTATE=42501

我以RESTORE数据库的用户身份登录。这里的问题是什么?

1 个答案:

答案 0 :(得分:1)

将DB2-luw数据库备份还原到其他Db2实例时,首先在之前在目标Db2-instance 上设置Db2-registry变量是明智的。执行数据库还原。执行Db2-restore的帐户将在已还原的数据库上被授予SECADM,DBADM,DATAACCESS和ACCESSCTRL权限。

db2set DB2_RESTORE_GRANT_ADMIN_AUTHORITIES=on  

更多信息here

然后执行Db2-restore命令。

如果您尚未采取此操作,那么您还可以使用手动 GRANT 语句(在数据库级别和对象级别)调整为新的Db2实例,但为了获得最佳效果,您应该使用以上注册表变量。

您还可以在各个级别使用 TRANSFER OWNERSHIP 语句来实现安全模型。详情here。当前一个所有者是Db2实例并且已恢复的数据库与备份数据库位于不同的Db2实例中时,这非常有用。