日期:2014-05-17  浏览次数:20693 次

请问一个单纯的Insert 语句怎么老引起死锁呢?


CREATE TABLE [dbo].[LoadingRecord_tbl](
[CLR_ID] [numeric](18, 0) IDENTITY(1,1) NOT NULL,
[ID] [int] NULL,
[CLR_Createtime] [datetime] NULL,
[CLR_IP] [varchar](100) NULL,
 CONSTRAINT [PK_LOADINGRECORD_TBL] PRIMARY KEY CLUSTERED 
(
[CLR_ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

插入语句

CREATE PROCEDURE LoadingRecord_tbl_ADD
@CLR_ID numeric(18,0) output,
@ID int,
@CLR_Createtime datetime,
@CLR_IP varchar(100)

 AS 
INSERT INTO [LoadingRecord_tbl](
[ID],[CLR_Createtime],[CLR_IP]
)VALUES(
@ID,@CLR_Createtime,@CLR_IP
)
SET @CLR_ID = @@IDENTITY

GO



现在有记录745391条

------解决方案--------------------
引用:
9 死锁的进程 2013/8/14 13:12:51 2 runnable  .Net SqlClient Data Provider  cloudcar.dbo.LoadingRecord_tbl_ADD;1

9进程,还是runnable状态,说明它还未运行。但已经处于可运行状态。
除了SQL SERVER的锁会引起死锁,内存严重不足,多线程并行查询也会出现死锁现象。
建立此现象容易重现,打开1222跟踪,有死锁发生时,但看SQLSERVER LOG日志中的详细死锁信息。打开1222跟踪的语句是: DBCC TRACEON(1222,-1)
------解决方案--------------------
发生死锁前,打开1222跟踪,发生死锁后,去下面路径查看:
C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Log
ERRORLOG,ERRORLOG.1,ERRORLOG2...ERRORLOG.6
------解决方案--------------------
1、是死锁还是阻塞,要先定义好,两者不是一样的。
2、查看等待状态,获取问题的本质原因。
------解决方案--------------------
引用:
Quote: 引用:

发生死锁前,打开1222跟踪,发生死锁后,去下面路径查看:
C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Log
ERRORLOG,ERRORLOG.1,ERRORLOG2...ERRORLOG.6


没有这个目录啊

各个版本的的目录可能有所不同。#1.楼主可从网上查 #2.楼主可在SQL SERVER的安装目录搜索:ERRORLOG.1