当前位置: 代码迷 >> Sql Server >> 怎么解决以下sql死锁有关问题
  详细解决方案

怎么解决以下sql死锁有关问题

热度:101   发布时间:2016-04-24 09:14:24.0
如何解决以下sql死锁问题
    

CREATE PROCEDURE [dbo].[GetReceiptInfoOrg]
    (
      @OrganizationStructrueId INT = NULL ,@StartTime DATETIME = NULL , @EndTime DATETIME = NULL ,
      @TimeRate INT = NULL , @TypeId INT ,@PageIndex INT = 0 , @PageSize INT = 2147483644 , @TotalRecords INT = NULL OUTPUT
    )
AS 
    BEGIN
        SET NOCOUNT ON
        DECLARE @PageLowerBound INT
        DECLARE @PageUpperBound INT
        DECLARE @sql NVARCHAR(4000)
        DECLARE @sqlcount NVARCHAR(4000)
        DECLARE @RowsToReturn INT
DECLARE @ServiceCommon  int
DECLARE @ServiceCustomer int
        SET @RowsToReturn = @PageSize * ( @PageIndex + 1 )
        SET @PageLowerBound = @PageSize * @PageIndex
        SET @PageUpperBound = @PageLowerBound + @PageSize + 1
set @ServiceCommon=304
set @ServiceCustomer=331
        CREATE TABLE #DisplayReceiptInformationOrganization
            (
              [IndexId] INT IDENTITY(1, 1)
                            NOT NULL ,
              ProjectName NVARCHAR(200) ,
              Whole INT ,
              CommissionedCustomer INT ,
              PublicDelegate INT ,
              SMSSingle INT ,
              CompletionRate INT ,
              TimeRate INT ,
              WorkingHours INT ,
              AmountTelephoneAccess INT ,
              Satisfaction INT
            )    
        IF @TypeId = 1 
            BEGIN
             WITH t1 AS ( 
    SELECT ReceiptInformationId
      FROM dbo.ReturnVisit
  GROUP BY ReceiptInformationId
)
,t2 AS (
        SELECT c.*
          FROM t1
   CROSS APPLY (
                    SELECT top 1
                           ReceiptInformationId,
                           Satisfaction
                      FROM dbo.ReturnVisit rv
                     WHERE rv.ReceiptInformationId = t1.ReceiptInformationId
                  ORDER BY ReturnVisitDate DESC
               ) c
)

------解决思路----------------------
 在每个from 表名 后面加上 with(nolock) 试试。
------解决思路----------------------
读表的时候,加上With(NoLock)试试吧,不加的话,数据量一大更新一频繁100%死锁
  相关解决方案