Informix Error -583: View permissions no longer valid -- permissions on remote objects revoked.
Cause and resolution
View permissions no longer valid -- permissions on remote objects revoked.
This statement queries a view that is based on tables in external databases (databases other than the current database). However, in one or more of those external databases, your account does not have the necessary table-level privilege on a table that the view uses, or possibly your CONNECT privilege for an external database has been revoked. For a way to display the definition of a view, see the discussion of error -385. In the view definition, look for table names that are qualified with database names and possibly site names.
Oninit® Troubleshooting Guidance
Reasons / Common Causes
-583 fires when querying a view built over tables in one or more external databases, and the
session's access to one of those remote tables has since been revoked — either a table-level
privilege on the specific table the view uses, or the session's CONNECT privilege on the
external database itself.
- A table-level privilege revoked on a remote table the view depends on, per the official
guidance — a
REVOKE SELECT(or similar) issued in the external database after the view was created and working. CONNECTprivilege revoked on the external database itself, per the official guidance — broader than a single table's privilege, this cuts off access to the external database entirely.- A view that continued to be usable for a while after creation, then started failing once a remote administrator changed privileges independently — since the view's own definition doesn't change, this can look like the view itself broke when the actual change happened remotely.
Solutions / Resolution
- Identify which external database and table the view depends on, by reviewing the view's
definition:
SELECT viewtext FROM sysviews WHERE tabid = (SELECT tabid FROM systables WHERE tabname = 'view_name') ORDER BY seqno;sysviewsstores the view's definingSELECTone line per row (seqnogives the order), so ordering byseqnoreconstructs the full view definition. - Have the appropriate privilege restored — either the table-level privilege in the external
database, or
CONNECTon the external database itself — by whoever administers that remote database. - Confirm both privileges are in place before assuming the view itself needs to be recreated; the view's definition is very likely still valid, just currently unusable due to the remote privilege change.
Examples
Diagnosing which remote object lost access
SELECT viewtext FROM sysviews WHERE tabid =
(SELECT tabid FROM systables WHERE tabname = 'cross_db_summary')
ORDER BY seqno;
-- reveals which external database:table the view actually queries
Diagnostic Checks
- Read the view's definition via
sysviewsto identify the specific external database and table involved. - Check both
CONNECTprivilege on the external database and table-level privilege on the specific remote table, since either one being revoked triggers this error.
Related Errors / Related Topics
- -556 — "Cannot create, drop, or modify an object that is external to current database." A related cross-database error, about attempting a write rather than a privilege having been revoked.
- -557 — "Cannot locate table that is external to the current database after level-count levels of synonym mapping." A related cross-database error, about a broken synonym chain rather than a revoked privilege.
The view's own definition is very likely still fine — check the remote database/table's privileges first, since those are what actually changed.