2014-01-23 62 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的效果相同,這意味着如果滿足兩個條件集合,則不會獲得重複行。這可能是一件好事,這可能是一件壞事,但這絕對是你應該注意的事情。

如果不爲你工作,只是不斷簡化,直到你擺脫僵局。可能開始考慮執行計劃以查找可以提高效率的索引更改,從而使使用更少資源的查詢處於死鎖狀態。甚至可以使它成爲一個表值函數,您可以單獨運行每個函數,並將結果放入臨時表中,然後返回生成的臨時表。

有了它爲奇數的情況下,你不會找到它的多文檔,並推測答案像我可能是你將能夠在不與微軟打開的情況下做的最好。