Sql server 在SQL Server生产表上创建非聚集索引,而不在脱机模式下锁定读取和插入

Sql server 在SQL Server生产表上创建非聚集索引,而不在脱机模式下锁定读取和插入,sql-server,indexing,sql-server-2014,Sql Server,Indexing,Sql Server 2014,考虑到一个由用户定期查询的数百万行组成的表,以及后端软件不断生成的insert 有没有一种方法可以在不锁定用户的插入和选择的情况下,将新的非聚集索引添加到此datetime数据类型的表中,同时保持索引处于脱机模式 目标是该表应始终可供用户和后端访问 我知道对现有索引的操作要求索引操作处于联机状态以防止锁定,但如果只创建了非聚集索引,脱机模式是否仍会查询表锁,从而锁定SELECT和INSERT语句?如果需要脱机创建非聚集索引,由于在索引创建期间应用了表锁,因此无法最小化影响。唯一的替代方法是使用新

考虑到一个由用户定期查询的数百万行组成的表,以及后端软件不断生成的insert

有没有一种方法可以在不锁定用户的
插入
选择
的情况下,将新的非聚集索引添加到此datetime数据类型的表中,同时保持索引处于脱机模式

目标是该表应始终可供用户和后端访问


我知道对现有索引的操作要求索引操作处于联机状态以防止锁定,但如果只创建了非聚集索引,脱机模式是否仍会查询表锁,从而锁定
SELECT
INSERT
语句?

如果需要脱机创建非聚集索引,由于在索引创建期间应用了表锁,因此无法最小化影响。唯一的替代方法是使用新索引创建表的副本并复制数据。如果表持续更新,则可以添加触发器以保持两个表同步。在最终部署期间,您可以删除触发器并重命名事务中的表。这仍然会在重命名过程中锁定表,但是,重命名非常快,因此锁定应该最小。

您有SQL Server的企业版吗?很遗憾,我没有,我理解,使用企业版将允许对索引进行在线操作,并消除关于锁定表的大多数顾虑。但是,在创建非聚集索引的特定操作中使用脱机模式时,是否仍需要表锁,从而锁定插入和读取?