我有来自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数据库的用户身份登录。这里的问题是什么?
答案 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实例中时,这非常有用。