Overview
Starting on Dec 2 2026, CREATE OR REPLACE VIEW will update a view in-place instead of dropping and re-creating it. Grants, tags and comments are preserved by default with two caveats:
- As views execute with view owner’s permissions, grants are not preserved if a non-owner modifies the view definition via
CREATE OR REPLACE VIEW. - You must first remove Governed tags (AWS | Azure | GCP) on a view column before dropping the column via
CREATE OR REPLACE VIEW. Otherwise, the statement will fail with aCANNOT_DROP_TAGGED_COLUMNerror.
After this change, workflows that replace views may retain permissions that were previously dropped, or fail when removing view columns with governed tags.
Where does this apply
This change applies when you run CREATE OR REPLACE VIEW on:
- Classic all-purpose or jobs compute running Databricks Runtime 19 or above
- Databricks SQL warehouses (serverless, pro, or classic)
- Serverless compute for notebooks and jobs
- Spark Declarative Pipelines (serverless or classic)
How to know if a view or workflow is exposed to the change
A. The workflow depends on metadata being cleared
- The view has grants applied directly on the view, rather than inherited from the schema or catalog.
- The pipeline relies on COR VIEW removing those grants, tags or comments.
- Escape hatch: Add
NOCOPY *, which drops grants, comments and tags (except governed tags).
CREATE OR REPLACE VIEW main.sales.revenue_daily
NOCOPY *
AS SELECT date, SUM(amount) AS revenue
FROM main.sales.transactions
GROUP BY date;B. The workflow removes or renames governed-tagged columns
- A governed tag is set on a view column, and COR VIEW statement removes or renames that column
- Workaround: Unset the governed tag first, then run COR VIEW
UNSET TAG ON COLUMN <catalog>.<schema>.<view>.<column> <tag_key>;
CREATE OR REPLACE VIEW <catalog>.<schema>.<view> ...
Note
There is no escape hatch for dropping a governed-tagged column. This is consistent with ALTER VIEW today, and a security requirement to support ABAC policies on VIEW.
What you can do now
1. Identify affected views and workloads
Use the diagnostic notebook to find views with directly assigned grants or columns carrying governed tags.
2. Adopt the workarounds outlined above
Adopt the NOCOPY * syntax to drop grants, comments and tags on view replacement, and remove any governed tags before removing a tagged view column via CREATE OR REPLACE VIEW.
Appendix
Why do we drop grants when a non-owner modifies the view definition via CREATE OR REPLACE (COR)?
If COR VIEW preserves grants on views, users may access data through the new owner's permissions via grants issued under the previous owner:
| Step | Example |
|---|---|
| 1 |
Alice creates and owns
|
| 2 |
Carol has MANAGE on
|
| 3 | Carol is now the owner of |
| 4 | Bob queries view_sales and sees carols_secrets, but Carol never granted SELECT to Bob on view_sales. |
When is it safe to preserve grants on views?
Retaining grants on COR VIEW is safe only if ownership or view definition remains unchanged. If view definition is modified, it is only safe to retain grants when ownership remains unchanged:
| COR VIEW run by | Ownership preserved? | Grants preserved ? | Safe? |
|---|---|---|---|
| Owner | Yes | No | Safe: Grants dropped (current behaviour) |
| Yes |
Safe - grants stay under the same owner (same trust boundary as ALTER VIEW AS today) |
||
| Non-owner | No | No | Safe: Grants dropped (current behaviour) |
| Yes | Not safe: Grants not issued under the new owner are preserved - security escalation vector (see below) |
Why should we block users from dropping a governed-tagged column via COR VIEW
Removing a governed tag requires APPLY TAG on the view + MANAGE on the tag. whereas COR VIEW requires ownership or MANAGE on the view. A user without permissions to drop a governed tag can do so via COR VIEW:
| Step | Example |
|---|---|
| 1 |
Admin applies governed tag pii to the
|
| 2 |
View owner or user with MANAGE runs COR VIEW to remove
Current behavior: Drops New behavior: Fails with |
| 3 |
COR VIEW user can restore
|