2014-07-10 39 views
1

我們最近升級到了sql server 2012.我們有xxx-D-011作爲OLTP服務器,yyy-D-011作爲分銷服務器。 日誌在應用程序查詢/更新和複製作業之間每天都顯示死鎖。導致死鎖的SQL Server複製和應用程序查詢/更新衝突

下面包含有關死鎖的日誌片段。任何意見/想法,可以幫助我的下一步將非常感激。謝謝!

2014-07-10 15:31:05.94 spid13s  deadlock-list 
2014-07-10 15:31:05.94 spid13s  deadlock victim=process37ced3498 
2014-07-10 15:31:05.94 spid13s  process-list 
2014-07-10 15:31:05.94 spid13s  process id=process37ced3498 taskpriority=0 logused=0 waitresource=OBJECT: 8:532249001:0 waittime=357 ownerId=860304057 transactionname=SELECT lasttranstarted=2014-07-10T15:31:05.090 XDES=0x4674fbca0 lockMode=Sch-S schedulerid=2 kpid=10128 status=suspended spid=111 sbid=0 ecid=0 priority=0 trancount=0 lastbatchstarted=2014-07-10T15:31:05.090 lastbatchcompleted=2014-07-10T15:31:05.090 lastattention=1900-01-01T00:00:00.090 clientapp=.Net SqlClient Data Provider hostname=DIT3330W7DT hostpid=1092 loginname=xuser isolationlevel=read uncommitted (1) xactid=860304057 currentdb=8 lockTimeout=4294967295 clientoption1=673316896 clientoption2=128056 
2014-07-10 15:31:05.94 spid13s   executionStack 
2014-07-10 15:31:05.94 spid13s   frame procname= dbo.UpdatePurchaseOrderWorkQueueStatus line=39 stmtstart=2232 stmtend=2756 sqlhandle=0x0300080013baae0b4974c5004aa3000001000000000000000000000000000000000000000000000000000000 
2014-07-10 15:31:05.94 spid13s  SELECT @XDate = dbo.fn_getxdate(C.ClinicID) 
2014-07-10 15:31:05.94 spid13s  FROM dbo.Station S 
2014-07-10 15:31:05.94 spid13s  INNER JOIN dbo.Clinic C ON C.ClinicID = S.ClinicID 
2014-07-10 15:31:05.94 spid13s  INNER JOIN dbo.PurchaseOrder PO ON PO.StationID = S.StationID 
2014-07-10 15:31:05.94 spid13s  WHERE S.Active = 1 
2014-07-10 15:31:05.94 spid13s  AND PO.PurchaseOrderID = @PurchaseOrderID  
2014-07-10 15:31:05.94 spid13s   inputbuf 
2014-07-10 15:31:05.94 spid13s  Proc [Database Id = 8 Object Id = 196000275]  
2014-07-10 15:31:05.94 spid13s  process id=process37ced3c38 taskpriority=0 logused=60504 waitresource=OBJECT: 8:644249400:0 waittime=313 ownerId=860303537 transactionname=user_transaction lasttranstarted=2014-07-10T15:31:04.830 XDES=0x1da8ead28 lockMode=Sch-M schedulerid=2 kpid=5544 status=suspended spid=119 sbid=0 ecid=0 priority=0 trancount=5 lastbatchstarted=2014-07-10T15:31:04.880 lastbatchcompleted=2014-07-10T15:31:04.880 lastattention=1900-01-01T00:00:00.880 clientapp=xxx-D-011-x-x_OrgHierarchy_Publication-13 hostname=yyy-D-011 hostpid=3360 loginname=svcadminsqldev isolationlevel=read committed (2) xactid=860303537 currentdb=8 lockTimeout=4294967295 clientoption1=538968096 clientoption2=128024 
2014-07-10 15:31:05.94 spid13s   executionStack 
2014-07-10 15:31:05.94 spid13s   frame procname=mssqlsystemresource.sys.sp_MSsetfilteredstatus line=30 stmtstart=1570 stmtend=1796 sqlhandle=0x0300ff7f66f82acd71e2fc00efa0000001000000000000000000000000000000000000000000000000000000 
2014-07-10 15:31:05.94 spid13s  EXEC %%Object(MultiName = @qualified_name).LockMatchID(ID = @object_id, Exclusive = 1, BindInternal = 0)  
2014-07-10 15:31:05.94 spid13s   frame procname=mssqlsystemresource.sys.sp_MSrepl_changesubstatus line=909 stmtstart=66056 stmtend=66312 sqlhandle=0x0300ff7f48dddfc2bfe2fc00efa0000001000000000000000000000000000000000000000000000000000000 
2014-07-10 15:31:05.94 spid13s  exec sys.sp_MSsetfilteredstatus @tabid 
2014-07-10 15:31:05.94 spid13s       -- clear nonsqlsub status for this article.  
2014-07-10 15:31:05.94 spid13s   frame procname=mssqlsystemresource.sys.sp_changesubstatus line=52 stmtstart=3496 stmtend=5162 sqlhandle=0x0300ff7f5eea5ef792d8fa00efa0000001000000000000000000000000000000000000000000000000000000 
2014-07-10 15:31:05.94 spid13s  EXEC @retcode = @cmd 
2014-07-10 15:31:05.94 spid13s      @publication, 
2014-07-10 15:31:05.94 spid13s      @article, 
2014-07-10 15:31:05.94 spid13s      @subscriber, 
2014-07-10 15:31:05.94 spid13s      @status, 
2014-07-10 15:31:05.94 spid13s      @previous_status, 
2014-07-10 15:31:05.94 spid13s      @destination_db, 
2014-07-10 15:31:05.94 spid13s      @frequency_type, 
2014-07-10 15:31:05.94 spid13s      @frequency_interval, 
2014-07-10 15:31:05.94 spid13s      @frequency_relative_interval, 
2014-07-10 15:31:05.94 spid13s      @frequency_recurrence_factor, 
2014-07-10 15:31:05.94 spid13s      @frequency_subday, 
2014-07-10 15:31:05.94 spid13s      @frequency_subday_interval, 
2014-07-10 15:31:05.94 spid13s      @active_start_time_of_day, 
2014-07-10 15:31:05.94 spid13s      @active_end_time_of_day, 
2014-07-10 15:31:05.94 spid13s      @active_start_date, 
2014-07-10 15:31:05.94 spid13s      @active_end_date, 
2014-07-10 15:31:05.94 spid13s      @optional_command_line, 
2014-07-10 15:31:05.94 spid13s      @distribution_jobid OUTPUT, 
2014-07-10 15:31:05.95 spid13s      @from_auto_sync, 
2014-07-10 15:31:05.95 spid13s      @ignore_distributor, 
2014-07-10 15:31:05.95 spid13s      -- Agent offload 
2014-07-10 15:31:05.95 spid13s      @offloadagent, 
2014-07-10 15:31:05.95 spid13s      @offloadserver, 
2014-07-10 15:31:05.95 spid13s      @dts_package_name, 
2014-07-10 15:31:05.95 spid13s      @dts_package_password, 
2014-07-10 15:31:05.95 spid13s      @dts_package_location, 
2014-07-10 15:31:05.95 spid13s      @skipobjectactivation, 
2014-07-10 15:31:05.95 spid13s      @distribution_job_name, 
2014-07-10 15:31:05.95 spid13s      @publisher, 
2014-07-10 15:31:05.95 spid13s      @publisher_type 
2014-07-10 15:31:05.95 spid13s      ,@ignore_distributor_failure  
2014-07-10 15:31:05.95 spid13s   frame procname=mssqlsystemresource.sys.sp_MSactivate_auto_sub line=92 stmtstart=4236 stmtend=4768 sqlhandle=0x0300ff7f6366c5c4d8e2fc00efa0000001000000000000000000000000000000000000000000000000000000 
2014-07-10 15:31:05.95 spid13s  *sp_changesubstatus------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  
2014-07-10 15:31:05.95 spid13s   inputbuf 
2014-07-10 15:31:05.95 spid13s  Proc [Database Id = 32767 Object Id = -993696157]  
2014-07-10 15:31:05.95 spid13s  resource-list 
2014-07-10 15:31:05.95 spid13s  objectlock lockPartition=0 objid=532249001 subresource=FULL dbid=8 objectname=X.dbo.Station id=lock389908f00 mode=Sch-M associatedObjectId=532249001 
2014-07-10 15:31:05.95 spid13s   owner-list 
2014-07-10 15:31:05.95 spid13s   owner id=process37ced3c38 mode=Sch-M 
2014-07-10 15:31:05.95 spid13s   waiter-list 
2014-07-10 15:31:05.95 spid13s   waiter id=process37ced3498 mode=Sch-S requestType=wait 
2014-07-10 15:31:05.95 spid13s  objectlock lockPartition=0 objid=644249400 subresource=FULL dbid=8 objectname=X.dbo.Clinic id=lock3f2864b00 mode=S associatedObjectId=644249400 
2014-07-10 15:31:05.95 spid13s   owner-list 
2014-07-10 15:31:05.95 spid13s   owner id=process37ced3498 mode=Sch-S 
2014-07-10 15:31:05.95 spid13s   waiter-list 
2014-07-10 15:31:05.95 spid13s   waiter id=process37ced3c38 mode=Sch-M requestType=convert 

回答

1

這是非常不尋常的。

您是否使用普通香草刊物/訂閱?

組合中是否有過濾器?如果您使用過濾器,我們可以看到過濾器嗎?

發佈的文章中觸發器中的局部表變量存在一些問題。

我懷疑問題是與fn_getxdate,我可以看到該功能的代碼?

+0

希拉里,你在正確的軌道上。在寫這篇文章時,我有2個環境DEV和QA。在QA複製快照作業中被禁用。在Dev中,複製快照作業每5分鐘運行一次。在QA中沒有死鎖。因此,嫌疑人是運行頻繁的複製快照作業。 我將禁用DEV複製快照,並在接下來的3-5天內觀察日誌,以查看是否有助於最大限度地減少死鎖。 我將確認快照作業禁用是否停止/阻尼死鎖流程。謝謝! – Daisy

+0

Hilary,所有跡象表明快照作業運行頻繁導致死鎖。他們應該只在運行時按需運行一次。我做出了改變,實現了工作,事情現在好轉了。謝謝! – Daisy