【问题标题】:migrating from db2 Express-C to Developer version从 db2 Express-C 迁移到 Developer 版本
【发布时间】:2018-09-20 03:58:43
【问题描述】:

我有一个 db2 express-c 11.1 版本的备份文件,我想将它恢复到 db2 developer 版本(都在 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 数据库的用户身份登录。这里有什么问题?

【问题讨论】:

    标签: db2 db2-luw


    【解决方案1】:

    当将 DB2-luw 数据库备份恢复到不同的 Db2-instance 时,明智的做法是首先在目标 Db2-instance 上设置一个 Db2-registry 变量之前执行数据库恢复。执行 Db2 恢复的帐户随后将被授予对恢复的数据库的 SECADM、DBADM、DATAACCESS 和 ACCESSCTRL 权限。

    db2set DB2_RESTORE_GRANT_ADMIN_AUTHORITIES=on  
    

    更多信息here

    然后执行 Db2-restore 命令。

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

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

    【讨论】:

    • 我删除了恢复的数据库并执行了你的命令,然后再次恢复,现在我可以从命令行看到表格内容,但我在 Data Studio 中仍然面临一些问题并得到以下信息错误 com.ibm.db2.jcc.am.SqlException: DB2 SQL 错误: SQLCODE=-20249, SQLSTATE= , SQLERRMC=NULLID.SYSH200, DRIVER=3.69.56
    • 请不要在评论线程中问问题。您有一个与原始问题无关的新问题。如果对您有帮助,请创建一个新问题并将答案标记为正确。
    猜你喜欢
    • 2021-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-14
    • 2015-01-01
    相关资源
    最近更新 更多