sqlserver死锁问题
最近遇到个非常棘手的问题,数据经常性的死锁,倒致服务器CPU资源利用率达到95%以上,郁闷!哪位大侠帮我看看!就是下面这个存储过程倒致的,但好像没什么问题,大侠们帮忙瞧瞧!
ALTER PROC [dbo].[T_PageCut_New]
@tbname nvarchar(1000), --要分页显示的表名
@FieldKey nvarchar(1000), --用于定位记录的主键(惟一键)字段,可以是逗号分隔的多个字段,一定要有
@PageCurrent int=1, --要显示的页码
@PageSize int=10, --每页的大小(记录数)
@FieldShow nvarchar(4000)= '*', --以逗号分隔的要显示的字段列表,如果不指定,则显示所有字段
@FieldOrder nvarchar(1000)= ' ', --以逗号分隔的排序字段列表,可以指定在字段后面指定DESC/ASC用于指定排序顺序
@Where nvarchar(4000)= ' ', --查询条件
@PageCount int OUTPUT --总记录数
AS
set nocount on
declare @strSQL nvarchar(4000) -- 主语句
SET @FieldOrder=' ORDER BY '+LTRIM(@FieldOrder)
SET @Where=' WHERE ('+@Where+')'
--如果@PageCount为NULL值,则计算总页数(这样设计可以只在第一次计算总页数,以后调用时,把总页数传回给存储过程,避免再次计算总页数)
--IF @PageCount IS NULL
--BEGIN
DECLARE @sql nvarchar(4000)
SET @sql='SELECT @PageCount=COUNT(*) FROM '+@tbname + @Where
EXEC sp_executesql @sql,N'@PageCount int OUTPUT ',@PageCount OUTPUT
--SET @PageCount=(@PageCount+@PageSize-1)/@PageSize
--END
--计算分页显示的TOPN值
DECLARE @TopN int --值会变
DECLARE @TopN1 int --当前页及之前的所有页的记录总和
DECLARE @TopN2 int
SELECT @TopN=@PageSize,@TopN1=@PageCurrent*@PageSize,@TopN2=@TopN1-@TopN
--第一页直接显示
IF @PageCurrent=1
EXEC('SELECT TOP '+ @TopN + @FieldShow+' FROM '+ @tbname + @Where + @FieldOrder)
ELSE
BEGIN
--生成主键(唯一键)处理条件
DECLARE @s nvarchar(1000) --主健
SELECT @s=@FieldKey
--执行查询
EXEC (' SELECT Top '+@TopN+' '+@FieldShow +' FROM '+@tbname + @Where + ' and '+@s+' not in (select top '+@TopN2+' '+@s+' from '+@tbname + @Where + @FieldOrder+') '+ @FieldOrder)
END
set nocount off --------------------编程问答-------------------- 帮你顶啊。 --------------------编程问答-------------------- 现成的
补充:.NET技术 , ASP.NET