如何在Azure Synapse Analytics中删除物化视图
Azure Synapse Analytics 物化视图删除方法
注意:DROP MATERIALIZED VIEW语法仅在Synapse专用SQL池下可用,无服务器SQL池本身不支持物化视图,在无服务器池跑这个语句不会生效。
执行语句未生效的常见原因和解决方法
- 权限不足:删物化视图需要账号对该对象有
CONTROL权限,或者属于db_ddladmin、db_owner角色,只有普通查询、修改权限删不掉。 - 对象名填错:别直接凭记忆写schema和视图名,先跑下面的语句查库里实际存在的物化视图,确认名称和所属schema完全匹配:
SELECT s.name AS schema_name, mv.name AS materialized_view_name FROM sys.materialized_views mv JOIN sys.schemas s ON mv.schema_id = s.schema_id WHERE mv.name LIKE '%你要删的视图名关键词%'
很多人会把物化视图名和关联的基表名搞混,导致找不到对象、语句执行无效果。
- 操作被阻塞:如果有正在运行的查询正在读这个物化视图,DROP操作会被锁挡住,一直挂起不返回结果。跑下面的语句查阻塞的会话ID:
SELECT tl.request_session_id AS block_session_id, o.name AS locked_object FROM sys.dm_tran_locks tl JOIN sys.objects o ON tl.resource_associated_entity_id = o.object_id WHERE o.type = 'MV' AND o.name = '你要删的物化视图名'
拿到会话ID后执行KILL <会话ID>清掉阻塞,再重新跑删除语句就行。
标准删除语句
确认以上问题都排查完,直接跑对应语句即可:
DROP MATERIALIZED VIEW [schema_name].[your_mv_name];
不需要手动删物化视图自带的聚集列存储索引、关联统计信息,DROP语句会自动清理这些关联对象。
内容的提问来源于stack exchange,提问作者Ken Masters
相关产品推荐
相关产品推荐

