SQL Server 如何在视图定义更改期间解释活动的视图选择

arc*_*123 0 sql-server

我还需要知道在视图定义更改期间 SQL Server 如何处理视图上长时间运行的 SELECT 语句。

例如,假设我在此视图上执行一条 select 语句:

Select * from View

执行时,View 设置为: Select * from TableA

由于维护窗口、数据更新和其他 ETL 运行时,视图更改为: Select * from TableB 当视图中的 Select 语句仍在运行时。

SQL Server 如何看待这一点?SQL Server 是否会继续从原始定义中长时间运行 Select?或者它停止了吗?它会以新定义重新启动吗?

谢谢!

Dav*_*oft 6

在长时间运行的查询期间,会话将在视图上持有架构稳定性锁 (Sch-S ),更改视图需要不兼容的架构修改锁 (Sch-M),因此 ALTER 将等待 SELECT 。