涉及公共基表的兩個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
有什麼想法?
感謝
添加查詢提示:與(NOLOCK)你不認爲當查詢運行將得到更新的數據? – 2014-01-23 07:10:04
你有索引嗎?也許你的查詢正在執行鎖定整個表的表掃描。 –
@drewlander我已添加NOLOCK的問題仍然存在某種程度dono爲什麼! –