如何通过SQL Server 2014中的C#来解决嵌入式SQL中的死锁问题? [英] How to over come from deadlock in embedded SQL through C# in SQL Server 2014?
问题描述
大家好,
当在MS SQL Server 2014中通过C#编程语言调用嵌入式SQL时,我在Dispatching.PackageTrace表上遇到死锁问题。 />
以下是数据库中的表格设计:
CREATE TABLE [调度]。[PackageTrace](
[PackageID] [uniqueidentifier] ROWGUIDCOL NOT NULL,
[PartitionID] [numeric](26,0)NULL,
[管道] [nvarchar](255)NOT NULL,
PRIMARY KEY CLUSTERED
(
[PackageID] ASC >
)
如果存在(SELECT * FROM Dispatching.PackageTrace WHERE PackageID ='klaslndsskok230m')
BEGIN
UPDATE [Dispatching]。[PackageTrace] SET [Conduit] = @Conduit
WHERE [PackageID] ='klaslndsskok230m'
END
ELSE
BEGIN
INSERT INTO [Dispatching]。[PackageTrace]([PackageID],[PartitionID],[Conduit] )
VALUES(@ PackageID,@ PartignID,@ Conduit )
结束
建议真的很感激来自死锁问题。
提前谢谢。
--Raj
Hi All,
I am facing deadlock problem on Dispatching.PackageTrace table when below Embedded SQL is invoked through C# programming language in MS SQL Server 2014.
Below is the table design in Database:
CREATE TABLE [Dispatching].[PackageTrace](
[PackageID] [uniqueidentifier] ROWGUIDCOL NOT NULL,
[PartitionID] [numeric](26, 0) NULL,
[Conduit] [nvarchar](255) NOT NULL,
PRIMARY KEY CLUSTERED
(
[PackageID] ASC
)
IF EXISTS(SELECT * FROM Dispatching.PackageTrace WHERE PackageID = 'klaslndsskok230m')
BEGIN
UPDATE [Dispatching].[PackageTrace] SET [Conduit] = @Conduit
WHERE [PackageID] = 'klaslndsskok230m'
END
ELSE
BEGIN
INSERT INTO [Dispatching].[PackageTrace] ([PackageID] ,[PartitionID] ,[Conduit] )
VALUES (@PackageID, @PartitionID, @Conduit)
END
Suggestions really appreciated to over come from deadlock problem.
Thank you in advance.
--Raj
推荐答案
尝试使用nolock语句编写select查询。它应该会改善你的情况。否则此部分将在运行时阻止整个表格导致死锁。
SELECT * FROM Dispatching.PackageTrace(NOLOCK)WHERE PackageID ='klaslndsskok230m'
Try to write your select query with a nolock statement. It should improve your situation a lot. Otherwise this part will block the entire table when running causing deadlocks.
SELECT * FROM Dispatching.PackageTrace (NOLOCK) WHERE PackageID = 'klaslndsskok230m'
这篇关于如何通过SQL Server 2014中的C#来解决嵌入式SQL中的死锁问题?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!