2014-01-23 63 views
2

涉及公共基表的两个SQL语句使用UNION进行组合。在SQL Server 2008中选择查看和联合以及死锁

此查询由业务对象生成和报告工作了一段时间。

最近,我们开始看到以下错误,当运行报告对生产Datamart的

消息1205,级别13,状态2,行1个
事务(进程ID 121)已被死锁的线程|通信缓冲区资源与另一个进程并被选为死锁受害者。重新运行交易。

我复制了查询,并具有行大约相同数量的PROD发展运行它,它是在那里工作,但是当在生产中运行它给了我同样的错误如上。

ALTER VIEW [dbo].[TESTDetails_CASSETS] 
AS  
    SELECT  
     allocation.SeatNumber,LDMCateg.LookupDescription as SeatCategory, 
     Country.CountryName AS Country, 
     CityMaster.Cityname AS City, 
     FacilityMaster.FacilityDescription AS Facility, 
     BuildingMaster.BuildingDescription AS Building, 
     FloorMaster.FloorDescription AS Floor, 
     WingMaster.WingDescription AS Wing, 
     BayMaster.BayDescription AS Bay, 
     allocation.AssociateID, allocation.AssociateName, 
     allocation.PoolID AS ProjectID, 
     allocation.PoolName AS ProjectName, 
     allocation.SeatAllocationStartDate, 
     allocation.SeatAllocationEndDate, 
     allocation.ShiftStartTime, 
     allocation.ShiftEndTime, 
     AllocAccount.PoolID as AccountID, 
     AllocAccount.PoolName as AccountName, 
     AllocPRactice.PoolID AS PracticeID, 
     data.SeatRequestTypeDesc AS SeatAllocationType, 
     dbo.FloorMaster.HCMLocationCode, 
     LDMNetwork.LookupDescription as Network, 
     LDMSEZ.LookupDescription as FacilityType, 
     LDMSECLUDED.LookupDescription as IsSeatSecluded 

    FROM   
     dbo.SeatAllocation(NOLOCK) AS allocation 
    INNER JOIN 
     dbo.SeatAllocation(NOLOCK) AllocPRactice on allocation.SeatNumber = AllocPRactice.SeatNumber 
    INNER JOIN 
     dbo.SeatAllocation(NOLOCK) AllocAccount on allocation.SeatNumber = AllocAccount.SeatNumber 
    INNER JOIN 
     dbo.SeatRequestType(NOLOCK) AS data ON allocation.SeatAllocationTypeID = data.SeatRequestTypeID 
    INNER JOIN 
     dbo.SeatMaster(NOLOCK) AS SeatMr ON SeatMr.SeatNumber = allocation.SeatNumber 
    INNER JOIN 
     dbo.Country(NOLOCK) ON dbo.Country.CountryID = SeatMr.CountryID 
    INNER JOIN 
     dbo.CityMaster(NOLOCK) ON dbo.CityMaster.CityID = SeatMr.CityID 
    LEFT OUTER JOIN 
     dbo.FacilityMaster(NOLOCK) ON dbo.FacilityMaster.FacilityID = SeatMr.FacilityID 
    LEFT OUTER JOIN 
     dbo.BuildingMaster(NOLOCK) ON dbo.BuildingMaster.BuildingID = SeatMr.BuildingID 
    LEFT OUTER JOIN 
     dbo.FloorMaster(NOLOCK) ON dbo.FloorMaster.FloorID = SeatMr.FloorID 
    LEFT OUTER JOIN 
     dbo.WingMaster(NOLOCK) ON SeatMr.WingId = dbo.WingMaster.WingID 
    LEFT OUTER JOIN 
     dbo.BayMaster(NOLOCK) ON SeatMr.BayID = dbo.BayMaster.BayID 
    INNER JOIN 
     dbo.LookupDataMaster(NOLOCK) LDMCateg on SeatMr.SeatCategoryID = LDMCateg.LookupTypeID 
    INNER JOIN 
     dbo.LookupDataMaster(NOLOCK) LDMNetwork on SeatMr.NetworkType = LDMNetwork.LookupTypeID 
    INNER JOIN 
     dbo.LookupDataMaster(NOLOCK) LDMSEZ on FacilityMaster.FacilityType = LDMSEZ.LookupTypeID 
    INNER JOIN 
     dbo.LookupDataMaster(NOLOCK) LDMSECLUDED on SeatMr.IsSecluded = LDMSECLUDED.LookupTypeID 
    WHERE 
     (allocation.AssociateID IS NOT NULL) 
     AND (allocation.SeatNumber <> '') 
     --AND (dbo.CityMaster.CityID IN (10, 4, 1)) 
     AND AllocPRactice.PoolType = 96 
     --AND AllocAccount.PoolType = 97 
     AND AllocAccount.PoolType = 99 
     AND allocation.SeatAllocationTypeID = 1   
     AND LDMCateg.LookupCategoryMasterID = 13 
     AND LDMNetwork.LookupCategoryMasterID = 8 
     AND LDMSEZ.LookupCategoryMasterID = 12 
     AND LDMSECLUDED.LookupCategoryMasterID = 6 

UNION 

    SELECT  
     allocation.SeatNumber, 
     LDMCateg.LookupDescription as SeatCategory, 
     Country.CountryName AS Country, 
     CityMaster.Cityname AS City, 
     FacilityMaster.FacilityDescription AS Facility, 
     BuildingMaster.BuildingDescription AS Building, 
     FloorMaster.FloorDescription AS Floor, 
     WingMaster.WingDescription AS Wing, 
     BayMaster.BayDescription AS Bay, 
     allocation.AssociateID, 
     allocation.AssociateName, 
     allocation.PoolID AS ProjectID, 
     allocation.PoolName AS ProjectName, 
     allocation.SeatAllocationStartDate, 
     allocation.SeatAllocationEndDate, 
     allocation.ShiftStartTime, 
     allocation.ShiftEndTime, 
     SeatMr.AccountID as AccountID, 
     SeatMr.AccountName as AccountName, 
     SeatMr.BusinessUnitID AS PracticeID, 
     data.SeatRequestTypeDesc AS SeatAllocationType, 
     dbo.FloorMaster.HCMLocationCode, 
     LDMNetwork.LookupDescription as Network, 
     LDMSEZ.LookupDescription as FacilityType, 
     LDMSECLUDED.LookupDescription as IsSeatSecluded     
    FROM  
     dbo.SeatAllocation(NOLOCK) AS allocation INNER JOIN 
     dbo.SeatRequestType(NOLOCK) AS data ON allocation.SeatAllocationTypeID = data.SeatRequestTypeID INNER JOIN 
     dbo.SeatMaster(NOLOCK) AS SeatMr ON SeatMr.SeatNumber = allocation.SeatNumber INNER JOIN 
     dbo.Country(NOLOCK) ON dbo.Country.CountryID = SeatMr.CountryID INNER JOIN 
     dbo.CityMaster(NOLOCK) ON dbo.CityMaster.CityID = SeatMr.CityID LEFT OUTER JOIN 
     dbo.FacilityMaster(NOLOCK) ON dbo.FacilityMaster.FacilityID = SeatMr.FacilityID LEFT OUTER JOIN 
     dbo.BuildingMaster(NOLOCK) ON dbo.BuildingMaster.BuildingID = SeatMr.BuildingID LEFT OUTER JOIN 
     dbo.FloorMaster(NOLOCK) ON dbo.FloorMaster.FloorID = SeatMr.FloorID LEFT OUTER JOIN 
     dbo.WingMaster(NOLOCK) ON SeatMr.WingId = dbo.WingMaster.WingID LEFT OUTER JOIN 
     dbo.BayMaster(NOLOCK) ON SeatMr.BayID = dbo.BayMaster.BayID INNER JOIN 
     dbo.LookupDataMaster(NOLOCK) LDMCateg on SeatMr.SeatCategoryID = LDMCateg.LookupTypeID INNER JOIN 
     dbo.LookupDataMaster(NOLOCK) LDMNetwork on SeatMr.NetworkType = LDMNetwork.LookupTypeID INNER JOIN 
     dbo.LookupDataMaster(NOLOCK) LDMSEZ on FacilityMaster.FacilityType = LDMSEZ.LookupTypeID INNER JOIN 
     dbo.LookupDataMaster(NOLOCK) LDMSECLUDED on SeatMr.IsSecluded = LDMSECLUDED.LookupTypeID 
    WHERE  
     (allocation.AssociateID IS NOT NULL) 
     AND (allocation.SeatNumber <> '') 
     --AND (dbo.CityMaster.CityID IN (10, 4, 1)) 
     AND allocation.SeatAllocationTypeID = 2 
     AND LDMCateg.LookupCategoryMasterID = 13 
     AND LDMNetwork.LookupCategoryMasterID = 8 
     AND LDMSEZ.LookupCategoryMasterID = 12 
     AND LDMSECLUDED.LookupCategoryMasterID = 6 

UNION 

    SELECT  
     SeatMr.SeatNumber, 
     LDMCateg.LookupDescription as SeatCategory, 
     Country.CountryName AS Country, 
     CityMaster.Cityname AS City, 
     FacilityMaster.FacilityDescription AS Facility, 
     BuildingMaster.BuildingDescription AS Building, 
     FloorMaster.FloorDescription AS Floor, 
     WingMaster.WingDescription AS Wing, 
     BayMaster.BayDescription AS Bay, 
     NULL AS AssociateID, 
     NULL AS AssociateName, 
     NULL AS ProjectID, 
     NULL AS ProjectName, 
     NULL AS SeatAllocationStartDate, 
     NULL AS SeatAllocationEndDate, 
     NULL AS ShiftStartTime, 
     NULL AS ShiftEndTime, 
     NULL AS AccountID, 
     NULL AS AccountName, 
     NULL AS PracticeID, 
     NULL AS SeatAllocationType, 
     FloorMaster.HCMLocationCode, 
     LDMNetwork.LookupDescription as Network, 
     LDMSEZ.LookupDescription as FacilityType, 
     LDMSECLUDED.LookupDescription as IsSeatSecluded 
    FROM    
     dbo.SeatMaster(NOLOCK) AS SeatMr INNER JOIN 
     dbo.Country(NOLOCK) ON dbo.Country.CountryID = SeatMr.CountryID INNER JOIN 
     dbo.CityMaster(NOLOCK) ON dbo.CityMaster.CityID = SeatMr.CityID LEFT OUTER JOIN 
     dbo.FacilityMaster(NOLOCK) ON dbo.FacilityMaster.FacilityID = SeatMr.FacilityID LEFT OUTER JOIN 
     dbo.BuildingMaster(NOLOCK) ON dbo.BuildingMaster.BuildingID = SeatMr.BuildingID LEFT OUTER JOIN 
     dbo.FloorMaster(NOLOCK) ON dbo.FloorMaster.FloorID = SeatMr.FloorID LEFT OUTER JOIN 
     dbo.WingMaster(NOLOCK) ON SeatMr.WingId = dbo.WingMaster.WingID LEFT OUTER JOIN 
     dbo.BayMaster(NOLOCK) ON SeatMr.BayID = dbo.BayMaster.BayID INNER JOIN 
     dbo.LookupDataMaster(NOLOCK) LDMCateg on SeatMr.SeatCategoryID = LDMCateg.LookupTypeID INNER JOIN 
     dbo.LookupDataMaster(NOLOCK) LDMNetwork on SeatMr.NetworkType = LDMNetwork.LookupTypeID INNER JOIN 
     dbo.LookupDataMaster(NOLOCK) LDMSEZ on FacilityMaster.FacilityType = LDMSEZ.LookupTypeID INNER JOIN 
     dbo.LookupDataMaster(NOLOCK) LDMSECLUDED on SeatMr.IsSecluded = LDMSECLUDED.LookupTypeID 
    WHERE  
     (SeatMr.SeatNumber <> '') 
     --AND (dbo.CityMaster.CityID IN (10, 4, 1)) 
     AND SeatMr.BusinessUnitID is NULL and SeatMr.AccountID is NULL 
     AND SeatMr.SeatNumber NOT IN (SELECT SeatNumber FROM SeatAllocation WHERE SeatAllocationTypeID = 2) 
     AND LDMCateg.LookupCategoryMasterID = 13 
     AND LDMNetwork.LookupCategoryMasterID = 8 
     AND LDMSEZ.LookupCategoryMasterID = 12 
     AND LDMSECLUDED.LookupCategoryMasterID = 6 

UNION 

    SELECT  
     SeatMr.SeatNumber, 
     LDMCateg.LookupDescription as SeatCategory, 
     Country.CountryName AS Country, 
     CityMaster.Cityname AS City, 
     FacilityMaster.FacilityDescription AS Facility, 
     BuildingMaster.BuildingDescription AS Building, 
     FloorMaster.FloorDescription AS Floor, 
     WingMaster.WingDescription AS Wing, 
     BayMaster.BayDescription AS Bay, 
     NULL AS AssociateID, 
     NULL AS AssociateName, 
     NULL AS ProjectID, 
     NULL AS ProjectName, 
     NULL AS SeatAllocationStartDate, 
     NULL AS SeatAllocationEndDate, 
     NULL AS ShiftStartTime, 
     NULL AS ShiftEndTime, 
     NULL AS AccountID, 
     NULL AS AccountName, 
     Allocation.PoolID AS PracticeID, 
     NULL AS SeatAllocationType, 
     FloorMaster.HCMLocationCode, 
     LDMNetwork.LookupDescription as Network, 
     LDMSEZ.LookupDescription as FacilityType, 
     LDMSECLUDED.LookupDescription as IsSeatSecluded 
    FROM    
     dbo.SeatMaster(NOLOCK) AS SeatMr INNER JOIN 
     dbo.SeatAllocation(NOLOCK) as Allocation on SeatMr.SeatNumber = Allocation.SeatNumber INNER JOIN 
     dbo.Country(NOLOCK) ON dbo.Country.CountryID = SeatMr.CountryID INNER JOIN 
     dbo.CityMaster(NOLOCK) ON dbo.CityMaster.CityID = SeatMr.CityID LEFT OUTER JOIN 
     dbo.FacilityMaster(NOLOCK) ON dbo.FacilityMaster.FacilityID = SeatMr.FacilityID LEFT OUTER JOIN 
     dbo.BuildingMaster(NOLOCK) ON dbo.BuildingMaster.BuildingID = SeatMr.BuildingID LEFT OUTER JOIN 
     dbo.FloorMaster(NOLOCK) ON dbo.FloorMaster.FloorID = SeatMr.FloorID LEFT OUTER JOIN 
     dbo.WingMaster(NOLOCK) ON SeatMr.WingId = dbo.WingMaster.WingID LEFT OUTER JOIN 
     dbo.BayMaster(NOLOCK) ON SeatMr.BayID = dbo.BayMaster.BayID INNER JOIN 
     dbo.LookupDataMaster(NOLOCK) LDMCateg on SeatMr.SeatCategoryID = LDMCateg.LookupTypeID INNER JOIN 
     dbo.LookupDataMaster(NOLOCK) LDMNetwork on SeatMr.NetworkType = LDMNetwork.LookupTypeID INNER JOIN 
     dbo.LookupDataMaster(NOLOCK) LDMSEZ on FacilityMaster.FacilityType = LDMSEZ.LookupTypeID INNER JOIN 
     dbo.LookupDataMaster(NOLOCK) LDMSECLUDED on SeatMr.IsSecluded = LDMSECLUDED.LookupTypeID 
    WHERE  
     (SeatMr.SeatNumber <> '') 
     --AND (dbo.CityMaster.CityID IN (10, 4, 1)) 
     AND SeatMr.BusinessUnitID is Not NULL 
     and SeatMr.AccountID is NULL 
     and Allocation.PoolType = 96 
     AND LDMCateg.LookupCategoryMasterID = 13 
     AND LDMNetwork.LookupCategoryMasterID = 8 
     AND LDMSEZ.LookupCategoryMasterID = 12 
     AND LDMSECLUDED.LookupCategoryMasterID = 6 


UNION 

    SELECT  
     SeatMr.SeatNumber, 
     LDMCateg.LookupDescription as SeatCategory, 
     dbo.Country.CountryName AS Country, 
     dbo.CityMaster.Cityname AS City, 
     dbo.FacilityMaster.FacilityDescription AS Facility, 
     dbo.BuildingMaster.BuildingDescription AS Building, 
     dbo.FloorMaster.FloorDescription AS Floor, 
     dbo.WingMaster.WingDescription AS Wing, 
     dbo.BayMaster.BayDescription AS Bay, 
     NULL AS AssociateID, 
     NULL AS AssociateName, 
     NULL AS ProjectID, 
     NULL AS ProjectName, 
     NULL AS SeatAllocationStartDate, 
     NULL AS SeatAllocationEndDate, 
     NULL AS ShiftStartTime, 
     NULL AS ShiftEndTime, 
     Allocation.PoolID AS AccountID, 
     Allocation.PoolName AS AccountName, 
     AllocPractice.PoolID AS PracticeID, 
     NULL AS SeatAllocationType, 
     FloorMaster.HCMLocationCode, 
     LDMNetwork.LookupDescription as Network, 
     LDMSEZ.LookupDescription as FacilityType, 
     LDMSECLUDED.LookupDescription as IsSeatSecluded 
    FROM    
     dbo.SeatMaster(NOLOCK) AS SeatMr INNER JOIN 
     dbo.SeatAllocation(NOLOCK) as Allocation on SeatMr.SeatNumber = Allocation.SeatNumber INNER JOIN 
     dbo.SeatAllocation AllocPractice on allocation.SeatNumber = AllocPRactice.SeatNumber INNER JOIN 
     dbo.Country(NOLOCK) ON dbo.Country.CountryID = SeatMr.CountryID INNER JOIN 
     dbo.CityMaster(NOLOCK) ON dbo.CityMaster.CityID = SeatMr.CityID LEFT OUTER JOIN 
     dbo.FacilityMaster(NOLOCK) ON dbo.FacilityMaster.FacilityID = SeatMr.FacilityID LEFT OUTER JOIN 
     dbo.BuildingMaster(NOLOCK) ON dbo.BuildingMaster.BuildingID = SeatMr.BuildingID LEFT OUTER JOIN 
     dbo.FloorMaster(NOLOCK) ON dbo.FloorMaster.FloorID = SeatMr.FloorID LEFT OUTER JOIN 
     dbo.WingMaster(NOLOCK) ON SeatMr.WingId = dbo.WingMaster.WingID LEFT OUTER JOIN 
     dbo.BayMaster(NOLOCK) ON SeatMr.BayID = dbo.BayMaster.BayID INNER JOIN 
     dbo.LookupDataMaster(NOLOCK) LDMCateg on SeatMr.SeatCategoryID = LDMCateg.LookupTypeID INNER JOIN 
     dbo.LookupDataMaster(NOLOCK) LDMNetwork on SeatMr.NetworkType = LDMNetwork.LookupTypeID INNER JOIN 
     dbo.LookupDataMaster(NOLOCK) LDMSEZ on FacilityMaster.FacilityType = LDMSEZ.LookupTypeID INNER JOIN 
     dbo.LookupDataMaster(NOLOCK) LDMSECLUDED on SeatMr.IsSecluded = LDMSECLUDED.LookupTypeID 
    WHERE  
     (SeatMr.SeatNumber <> '') 
     --AND (dbo.CityMaster.CityID IN (10, 4, 1)) 
     AND SeatMr.BusinessUnitID IS NOT NULL 
     and SeatMr.AccountID IS NOT NULL 
     --and Allocation.PoolType = 97 
     and Allocation.PoolType = 99 
     AND AllocPractice.PoolType = 96 
     AND SeatMr.SeatNumber NOT IN 
     (
      SELECT 
       alloc.SeatNumber 
      FROM   
       dbo.SeatAllocation AS alloc INNER JOIN 
       dbo.SeatRequestType AS data ON alloc.SeatAllocationTypeID = data.SeatRequestTypeID INNER JOIN 
       dbo.SeatMaster AS SeatMr ON SeatMr.SeatNumber = alloc.SeatNumber 
      WHERE  
       alloc.PoolType = 98 
     ) 
     AND LDMCateg.LookupCategoryMasterID = 13 
     AND LDMNetwork.LookupCategoryMasterID = 8 
     AND LDMSEZ.LookupCategoryMasterID = 12 
     AND LDMSECLUDED.LookupCategoryMasterID = 6 

UNION 

    SELECT  
     ProjectAllocation.SeatNumber, 
     LDMCateg.LookupDescription as SeatCategory, 
     Country.CountryName AS Country, 
     CityMaster.Cityname AS City, 
     FacilityMaster.FacilityDescription AS Facility, 
     BuildingMaster.BuildingDescription AS Building, 
     FloorMaster.FloorDescription AS Floor, 
     WingMaster.WingDescription AS Wing, 
     BayMaster.BayDescription AS Bay, 
     ProjectAllocation.AssociateID, 
     ProjectAllocation.AssociateName, 
     ProjectAllocation.PoolID AS ProjectID, 
     ProjectAllocation.PoolName AS ProjectName, 
     ProjectAllocation.SeatAllocationStartDate, 
     ProjectAllocation.SeatAllocationEndDate, 
     ProjectAllocation.ShiftStartTime, 
     ProjectAllocation.ShiftEndTime, 
     AccountAllocation.PoolID AccountID, 
     AccountAllocation.PoolName AccountName, 
     PracticeAllocation.PoolID PracticeID, 
     data.SeatRequestTypeDesc AS SeatAllocationType, 
     FloorMaster.HCMLocationCode, 
     LDMNetwork.LookupDescription as Network, 
     LDMSEZ.LookupDescription as FacilityType, 
     LDMSECLUDED.LookupDescription as IsSeatSecluded 

    FROM 
     dbo.SeatAllocation(NOLOCK) AS ProjectAllocation INNER JOIN 
     dbo.SeatMaster(NOLOCK) AS SeatMr ON SeatMr.SeatNumber = ProjectAllocation.SeatNumber INNER JOIN 
     dbo.SeatAllocation(NOLOCK) AS AccountAllocation ON AccountAllocation.SeatNumber = SeatMr.SeatNumber INNER JOIN 
     dbo.SeatAllocation(NOLOCK) AS PracticeAllocation ON PracticeAllocation.SeatNumber = SeatMr.SeatNumber INNER JOIN 
     dbo.SeatRequestType(NOLOCK) AS data ON ProjectAllocation.SeatAllocationTypeID = data.SeatRequestTypeID INNER JOIN 
     dbo.Country(NOLOCK) ON dbo.Country.CountryID = SeatMr.CountryID INNER JOIN 
     dbo.CityMaster(NOLOCK) ON dbo.CityMaster.CityID = SeatMr.CityID LEFT OUTER JOIN 
     dbo.FacilityMaster(NOLOCK) ON dbo.FacilityMaster.FacilityID = SeatMr.FacilityID LEFT OUTER JOIN 
     dbo.BuildingMaster(NOLOCK) ON dbo.BuildingMaster.BuildingID = SeatMr.BuildingID LEFT OUTER JOIN 
     dbo.FloorMaster(NOLOCK) ON dbo.FloorMaster.FloorID = SeatMr.FloorID LEFT OUTER JOIN 
     dbo.WingMaster(NOLOCK) ON SeatMr.WingId = dbo.WingMaster.WingID LEFT OUTER JOIN 
     dbo.BayMaster(NOLOCK) ON SeatMr.BayID = dbo.BayMaster.BayID INNER JOIN 
     dbo.LookupDataMaster(NOLOCK) LDMCateg on SeatMr.SeatCategoryID = LDMCateg.LookupTypeID INNER JOIN 
     dbo.LookupDataMaster(NOLOCK) LDMNetwork on SeatMr.NetworkType = LDMNetwork.LookupTypeID INNER JOIN 
     dbo.LookupDataMaster(NOLOCK) LDMSEZ on FacilityMaster.FacilityType = LDMSEZ.LookupTypeID INNER JOIN 
     dbo.LookupDataMaster(NOLOCK) LDMSECLUDED on SeatMr.IsSecluded = LDMSECLUDED.LookupTypeID 

    WHERE  
     (ProjectAllocation.AssociateID is NULL) 
     AND (ProjectAllocation.SeatNumber <> '') 
     AND SeatMr.BusinessUnitID IS NOT NULL 
     AND SeatMr.AccountID IS NOT NULL 
     AND ProjectAllocation.PoolType = 98 
     --AND AccountAllocation.PoolType = 97 
     AND AccountAllocation.PoolType = 99 
     AND PracticeAllocation.PoolType = 96 
     AND LDMCateg.LookupCategoryMasterID = 13 
     AND LDMNetwork.LookupCategoryMasterID = 8 
     AND LDMSEZ.LookupCategoryMasterID = 12 
     AND LDMSECLUDED.LookupCategoryMasterID = 6 
GO 

有什么想法?

感谢

+1

添加查询提示:与(NOLOCK)你不认为当查询运行将得到更新的数据? – 2014-01-23 07:10:04

+1

你有索引吗?也许你的查询正在执行锁定整个表的表扫描。 –

+0

@drewlander我已添加NOLOCK的问题仍然存在某种程度dono为什么! –

回答

0

这不是典型的僵局,以及典型的僵局调试技术将在这里工作。您在“线程|通信缓冲区资源”上死锁,而不是数据页面。另外,这对于任何其他人在我们的本地计算机上进行复制和调试都是非常困难的情况。

因为它出现在SELECT和FROM子句几乎是一样的,你可以改写这个通过简单地让你的WHERE子句四个手术室。它需要做着离开加入到

其中(A IS NOT NULL和B = 1)或(IS NOT NULL和B = 2)或(IS NULL和B = 0)

正如警告,我的方法与将UNION更改为UNION ALLs的效果相同,这意味着如果满足两个条件集合,则不会获得重复行。这可能是一件好事,这可能是一件坏事,但这绝对是你应该注意的事情。

如果不为你工作,只是不断简化,直到你摆脱僵局。可能开始考虑执行计划以查找可以提高效率的索引更改,从而使使用更少资源的查询处于死锁状态。甚至可以使它成为一个表值函数,您可以单独运行每个函数,并将结果放入临时表中,然后返回生成的临时表。

有了它为奇数的情况下,你不会找到它的多文档,并推测答案像我可能是你将能够在不与微软打开的情况下做的最好。