MetricSign
EN|NLRequest Access
High severitypermissions

Power BI Refresh Error:
090301 (42501)

What does this error mean?

The executing role does not have the required privilege on the target schema. This blocks DDL operations (CREATE TABLE, CREATE VIEW) and schema-level metadata access even if the role has table-level grants.

Common causes

  • 1Role has USAGE on the database but not on the schema
  • 2USAGE privilege on the schema was revoked or never granted after a schema was created
  • 3The operation requires CREATE privilege on the schema (e.g., CREATE TABLE) which is separate from USAGE
  • 4Role hierarchy does not include the schema-owning role
  • 5Ownership of the schema changed and existing grants were not preserved

How to fix it

  1. 1Grant USAGE on the schema to the role: GRANT USAGE ON SCHEMA mydb.myschema TO ROLE my_role
  2. 2For DDL operations, also grant CREATE: GRANT CREATE TABLE ON SCHEMA mydb.myschema TO ROLE my_role
  3. 3Verify the full privilege chain: role → database USAGE → schema USAGE → object privilege
  4. 4Use SHOW GRANTS TO ROLE my_role to inspect current grants
  5. 5If using a role hierarchy, ensure the parent role has been granted the child role: GRANT ROLE child_role TO ROLE parent_role

Frequently asked questions

What is the difference between USAGE and SELECT on a schema?

USAGE on a schema allows the role to see and reference objects within the schema. SELECT (or other DML) on individual tables is a separate grant. Both are required for a role to query a table.

Can I grant privileges on all schemas at once?

Yes: GRANT USAGE ON ALL SCHEMAS IN DATABASE mydb TO ROLE my_role. Use FUTURE GRANTS to also cover new schemas: GRANT USAGE ON FUTURE SCHEMAS IN DATABASE mydb TO ROLE my_role.