Ale*_*lex 3 index sql-server-2008-r2 spatial
我使用以下代码在 SQL Server 2008 R2 中创建空间索引:
BEGIN TRANSACTION
SET QUOTED_IDENTIFIER ON
SET ARITHABORT ON
SET NUMERIC_ROUNDABORT OFF
SET CONCAT_NULL_YIELDS_NULL ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
COMMIT
BEGIN TRANSACTION
GO
CREATE SPATIAL INDEX SPATIAL_COMPANIES_GEO ON dbo.ITEMS(GEO) USING GEOGRAPHY_GRID
WITH(
GRIDS = ( LEVEL_1 = HIGH, LEVEL_2 = HIGH, LEVEL_3 = HIGH, LEVEL_4 = HIGH)
, CELLS_PER_OBJECT = 100
, STATISTICS_NORECOMPUTE = OFF
, ALLOW_ROW_LOCKS = ON
, ALLOW_PAGE_LOCKS = ON
)
GO
ALTER TABLE dbo.COMPANIES SET (LOCK_ESCALATION = TABLE)
GO
Run Code Online (Sandbox Code Playgroud)
该查询在 5 秒内执行,但随后该表ITEMS
似乎被锁定了几个小时。在 Management Studio 中,我无法展开索引文件夹,ITEMS
并且对该表的任何查询都会超时。此外,如果我重新启动 SQL Server 服务,我刚刚创建的空间索引就会消失。
我已经在包含 3.000.000 条记录的生产数据库上尝试过此操作,也在包含 300.000 条记录的测试数据库上尝试过此操作,结果相同。
这是正常的吗?我应该怎么做才能在不锁定数据库的情况下创建索引?
您启动一个事务但不提交第二个事务,因此表将保持锁定状态。
SQL Server重新启动将回滚包含CREATE INDEX的事务
删除两个 BEGIN TRANSACTION
调用 和COMMIT
(或添加最后一个COMMIT TRAN
)
归档时间: |
|
查看次数: |
371 次 |
最近记录: |