集群列存储索引在开始时创建,并在作业完成后消失

时间:2017-06-05 16:36:24

标签: sql-server sql-server-2012 sql-server-2014

我有一个现有的应用程序,它有许多运行如下的SQL Server存储过程。这些存储过程应用于数据文件,并根据某些业务规则进行计算。

1) Pre-process
2) Process 
3) Post-Process

在预处理过程中,我们正在创建'n'否。具有聚簇列存储索引的表的位置。当作业开始时,使用聚簇列存储索引创建表,但是一旦作业完成,索引就会消失。 (这仅适用于大型输入数据文件。)

当我在一个小数据文件上运行作业时,会在表上创建聚簇列存储索引,即使在作业完成后它也存在。

注意: - 当我为小型和大型数据文件执行时,代码是相同的。

如果您遇到类似的问题,有人可以分享您的想法吗?

1 个答案:

答案 0 :(得分:0)

有两件事会导致已完全建立的指数从表中“消失”:

  1. 进程或用户删除它。
  2. 回滚创建索引的事务,因为事务中稍后引发了异常,事务无法恢复,或者通过显式回滚。
  3. 就是这样。你回答的就是上面两个中的一个。

    我知道这不是你想要的答案,但它肯定是答案。某处你的代码失败了,这就是索引现在消失的原因。

    Sql Server不是一个slapdash RDBMS - 如果它只是随意地随机删除了索引,那么你知道我们将全力以赴。你自己承认,你的代码很复杂。

    我们的DataWarehouse会定期删除和重建所有类型的索引 - 它们“丢失”它们的唯一时间是我们的代码中的错误。