禁用表中的索引后出错

Kaj*_*aja 4 t-sql sql-server

我想批量插入,但是需要很长时间。我的想法是禁用表上的索引,以更快地执行INSERT。但是在那之后我得到了这个错误:

错误:查询处理器无法生成计划,因为CRMD_MKTTG_TG_I~0表或视图' CRMD_MKTTG_TG_I' 上的索引已被禁用。

我正在使用以下脚本生成表:

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [CRMD_MKTTG_TG_I](
    [CLIENT] [nvarchar](3) NOT NULL,
    [GUID] [varbinary](16) NOT NULL,
    [TG_GUID] [varbinary](16) NULL,
    [BP_GUID] [varbinary](16) NULL,
    [BP_ORG] [nvarchar](2) NOT NULL,
    [BP_DEL] [nvarchar](1) NOT NULL,
    [REL_GUID] [varbinary](16) NULL,
    [RELATIONSHIP] [nvarchar](6) NOT NULL,
    [TYPE_BP_GUID] [nvarchar](1) NOT NULL,
    [TYPE_REL_GUID] [nvarchar](1) NOT NULL,
    [ROW_NUMBER] [int] NOT NULL,
 CONSTRAINT [CRMD_MKTTG_TG_I~0] PRIMARY KEY CLUSTERED 
(
    [CLIENT] ASC,
    [GUID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO
Run Code Online (Sandbox Code Playgroud)

任何的想法?

Jul*_*eur 6

[CRMD_MKTTG_TG_I~0]是聚簇索引。如果禁用它,则无法访问数据(选择,插入,更新,删除数据)。

读取禁用索引和约束

  • 禁用索引会阻止用户访问索引
  • 以及针对基础表数据的聚集索引。

在这种情况下,您只能:

  • 删除聚簇索引并将其转换为堆,
  • 查询你的桌子
  • 然后创建一个新的聚集索引。

  • 您可以使用重建来启用禁用的索引。然而,当聚集索引被禁用时,您仍然无法查询表,因此出现 OP 错误。 (3认同)
  • 怎么样:**`ALTER INDEX [CRMD_MKTTG_TG_I〜0] REBUILD` **? (2认同)