SQL Server插入语句挂起

时间:2016-02-11 07:36:33

标签: sql sql-server

真的希望有人可以在这里提供一些建议。我有一个具有以下结构的SQL语句:

SELECT <Columns> FROM (SELECT <More columns> FROM (SELECT <AllColumns> FROM View))

有些步骤似乎不需要,但所有这些步骤都有原因

  • 该视图包含每次导入进程运行时自动更新的数据。它包含一个相当大的查询,从多个表中收集数据。
  • 从该视图中,我们的客户可以构建自己的查询,以便为报告目的创建SSAS数据库,从而进行第二次查询。这里还应用了一些额外的逻辑,如友好名称。
  • 有时我们的客户希望近距离检查数据,并在Web应用程序上带回2GB的查询很少是个好主意。因此,我们构建了一个工具,客户可以在其中选择他们想要从主查询返回的数据,因此外部查询。

以下是一个示例查询:

SELECT (ColA, ColB, ColC) 
   FROM (SELECT ColA, ColB, ColC, ColD, ColE, ColF 
     FROM (Select * FROM FullView))

所有这些都能正常工作,但在一个特定情况下会出现问题。为了尽可能快地进行数据检索,我们在数据库中创建了一个包含中间查询结果的汇总表。但是,对于我们的一个查询,摘要表拒绝构建。查询可以使用正确的列成功创建表,但数据永远不会被填充,SQL Server语句只是悬而未决。

我尝试了以下内容:

  • 最初创建摘要表的语句是SELECT INTO语句。除了有问题之外,它适用于所有查询。
  • 认为由于某些模糊的原因资源可能无法释放,我将语句拆分为SELECT INTO语句,WHERE子句为1 = 2(允许创建表)和INSERT INTO SELECT子句,它将创建数据。 SELECT INTO语句运行完美,INSERT INTO SELECT子句什么都不做。
  • 但是,如果我要运行INSERT INTO子句的SELECT部分​​,则查询将在一分钟内执行,这是可接受的,因为原始视图的执行时间。但是如果我在前面添加INSERT INTO语句而不更改SELECT语句的任何部分,则查询将挂起。也许它会在某个地方执行,但是从一分钟到几个小时返回较少数据的查询可能会激怒一些人。
  • 我查看了sp_who2结果,系统中没有块。

是否有人有任何建议或其他地方我可以查找错误?

谢谢!

0 个答案:

没有答案