Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 взаимоблокировка при создании снэпшота  [new]
Shurgenz
Member

Откуда: Питер
Сообщений: 1938
Сообщения об ошибках:
Message: Транзакция (идентификатор процесса 310) вызвала взаимоблокировку ресурсов блокировка с другим процессом и стала жертвой взаимоблокировки. Запустите транзакцию повторно.
Command Text: exec sp_MSmakegeneration
Parameters:
Stack: в Microsoft.SqlServer.Replication.AgentCore.ReMapSqlException(SqlException e, SqlCommand command)
в Microsoft.SqlServer.Replication.AgentCore.AgentExecuteNonQuery(SqlCommand command, Int32 queryTimeout)
в Microsoft.SqlServer.Replication.AgentCore.ExecuteDiscardResults(CommandSetupDelegate commandSetupDelegate, Int32 queryTimeout)
в Microsoft.SqlServer.Replication.Snapshot.MergeSnapshotProvider.DoRegularMergeSnapshotPreparations()
в Microsoft.SqlServer.Replication.Snapshot.MergeSnapshotProvider.DoPreArticleFilesGenerationProcessing()
в Microsoft.SqlServer.Replication.Snapshot.SqlServerSnapshotProvider.GenerateSnapshot()
в Microsoft.SqlServer.Replication.SnapshotGenerationAgent.InternalRun()
в Microsoft.SqlServer.Replication.AgentCore.Run() (Источник: MSSQLServer, номер ошибки: 1205)
Получить справку: http://help/1205
Server SQLSERVERNEW, Level 13, State 51, Procedure sp_MSmakegeneration, Line 492
Транзакция (идентификатор процесса 310) вызвала взаимоблокировку ресурсов блокировка с другим процессом и стала жертвой взаимоблокировки. Запустите транзакцию повторно. (Источник: MSSQLServer, номер ошибки: 1205)
Получить справку: http://help/1205

Блин, что делать.... снэпшот повторно запускается и падает во взаимоблокировку
19 авг 14, 22:58    [16465514]     Ответить | Цитировать Сообщить модератору
 Re: взаимоблокировка при создании снэпшота  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37139
SET DEADLOCK_PRIORITY
19 авг 14, 23:16    [16465596]     Ответить | Цитировать Сообщить модератору
 Re: взаимоблокировка при создании снэпшота  [new]
invm
Member

Откуда: Москва
Сообщений: 9633
Shurgenz
Блин, что делать....
Если нет желания разбираться - установить в 1 опцию DistributorDeadlockPriority снепшот-агента.
А если таковое желание есть - опубликовать граф дедлока в виде xml.
19 авг 14, 23:20    [16465610]     Ответить | Цитировать Сообщить модератору
 Re: взаимоблокировка при создании снэпшота  [new]
Shurgenz
Member

Откуда: Питер
Сообщений: 1938
Ну худо бедно снэпшот применился... теперь дэдлоки мердж агента

вот граф:

<deadlock-list>
 <deadlock victim="process54d5dc8">
  <process-list>
   <process id="process54d5dc8" taskpriority="0" logused="0" waitresource="KEY: 24:72058354120785920 (13d9e898395a)" waittime="1933" ownerId="1285971400" transactionname="SELECT" lasttranstarted="2014-08-21T10:29:21.980" XDES="0xc7f61e590" lockMode="S" schedulerid="15" kpid="25800" status="suspended" spid="221" sbid="0" ecid="0" priority="0" trancount="0" lastbatchstarted="2014-08-21T10:29:21.980" lastbatchcompleted="2014-08-21T10:29:21.980" clientapp="SQLSERVERNEW-Rateinfo-pub_Merge_DB1_Lo-SERVER1\SQLS-3" hostname="SQLSERVERNEW" hostpid="25876" loginname="DOM\sqlstart" isolationlevel="read committed (2)" xactid="1285971400" currentdb="24" lockTimeout="4294967295" clientoption1="536938592" clientoption2="128024">
    <executionStack>
     <frame procname="mssqlsystemresource.sys.sp_MSenumgenerations90" line="76" stmtstart="6658" stmtend="11606" sqlhandle="0x0300ff7f0a676226e265ac007ea000000100000000000000">
select top (@numgens)  * 
        from
        (
            select generation, guidsrc, art_nick, 
                    case when genstatus = 4 then 0 else genstatus end as genstatus, 
                   pubid, nicknames, 
            okaytoskip = case when
                            art_nick is not null and art_nick &lt;&gt; 0
                            and genstatus in (0,4)
                            -- Skip all rows that are for incomplete generations for articles that have no joins.
                            and not exists (select 1 from dbo.sysmergesubsetfilters where (join_nickname = art_nick or art_nickname = art_nick) and (filter_type &amp; 1) = 1)
                        then 1 else 0 end
            , changecount
            from 
            (select generation, guidsrc, art_nick, genstatus, pubid, nicknames, changecount
                from dbo.MSmerge_genhistory with (rowlock, repeatableread)
                where generation &gt;= @genstart 
                and generation &lt;= @maxgen_to_e     </frame>
    </executionStack>
    <inputbuf>
Proc [Database Id = 32767 Object Id = 643983114]    </inputbuf>
   </process>
   <process id="process5c3d82bc8" taskpriority="0" logused="3368" waitresource="KEY: 24:72058354120785920 (0edd6c49ef68)" waittime="2051" ownerId="1285974701" transactionname="user_transaction" lasttranstarted="2014-08-21T10:29:22.127" XDES="0xdce90d950" lockMode="X" schedulerid="9" kpid="19412" status="suspended" spid="525" sbid="0" ecid="0" priority="0" trancount="2" lastbatchstarted="2014-08-21T10:29:22.123" lastbatchcompleted="2014-08-21T10:29:22.123" clientapp=".Net SqlClient Data Provider" hostname="WEBPC136" hostpid="72208" loginname="admin" isolationlevel="read committed (2)" xactid="1285974701" currentdb="24" lockTimeout="4294967295" clientoption1="673316896" clientoption2="128056">
    <executionStack>
     <frame procname="Rateinfo.dbo.MSmerge_upd_32A27B65538F4CD69408C92EFA30E595" line="60" stmtstart="6014" stmtend="6384" sqlhandle="0x03001800e2759821b2e5e7008da300000000000000000000">
update MSmerge_genvw_32A27B65538F4CD69408C92EFA30E595 with (rowlock)
            set changecount = changecount + @article_rows_updated
            where generation = @newgen     </frame>
     <frame procname="DB1.dbo.t_Loads_SetNormalizedRate" line="18" stmtstart="1082" stmtend="1540" sqlhandle="0x030018001b2fb24a03ca750171a300000000000000000000">
update lr
	set lr.Rate=rt.Rate
	from	LoadRates lr 
			join inserted ON 
				lr.FirmID=Inserted.FirmID 
				and lr.LoadID=Inserted.LoadID
			cross apply dbo.sfti_GetLoadNormalizedRate(Inserted.FirmID,Inserted.LoadID)	rt     </frame>
     <frame procname="adhoc" line="7" stmtstart="2132" sqlhandle="0x02000000a5be8c35d59c5234109df997220f2438ff16108b">
UPDATE TOP ( 1 )
                [Loads] WITH (UPDLOCK)
        SET [DateTime] = CASE WHEN @CurrentDateWithLapse &gt; [AddDate] THEN @CurrentDateWithLapse ELSE GETDATE() END WHERE LoadID = @LoadID
                AND FirmID = @FirmID     </frame>
     <frame procname="mssqlsystemresource.sys.sp_executesql" line="1" sqlhandle="0x0400ff7fbe80662601000000000000000000000000000000">
sp_executesql     </frame>
     <frame procname="Rateinfo.dbo.p_Load_Update" line="352" stmtstart="35460" stmtend="38736" sqlhandle="0x030018009806e045dfe796008da300000100000000000000">
exec sp_executesql @sql,@vars,@LoadID = @LoadID,@FirmID = @FirmID,@CurrentDateWithLapse = @CurrentDateWithLapse,@Load_city = @Load_city,@Load_FirstDate = @Load_FirstDate,@Load_LastDate = @Load_LastDate,@Cargo_type = @Cargo_type,
		@Unload_city = @Unload_city,@Note = @Note,@Cargo_weight = @Cargo_weight,@Cargo_volume = @Cargo_volume,@CurrencyID = @CurrencyID,@ADR = @ADR,@Qu_Cars = @Qu_Cars,@Custom_city = @Custom_city,
		@Cargo_TypeID = @Cargo_TypeID,@Load_DateType = @Load_DateType,@PayTypeID = @PayTypeID,@LocalUserID = @LocalUserID,@Dist = @Dist,@MoneyTypeID = @MoneyTypeID,@PayAttribs = @PayAttribs,
		@PrepayPercent = @PrepayPercent,@PayDays = @PayDays,@SizeL = @SizeL,@SizeW = @SizeW,@SizeH = @SizeH,@PalletCount = @PalletCount,@LoadAttribs = @LoadAttribs,@DocAttribs = @DocAttribs,
		@PathAttribs = @PathAttribs,@TruckAttribs = @TruckAttribs,@RateSum = @RateSum,@SumWithNDS = @SumWithNDS,@SumWithoutNDS = @SumWithoutNDS,@LocalUserID2 = @LocalUserID2,@PackTypeID = @PackTypeID,
		@BeltCount = @BeltCount,@TempAt     </frame>
    </executionStack>
    <inputbuf>
Proc [Database Id = 24 Object Id = 1172309656]    </inputbuf>
   </process>
  </process-list>
  <resource-list>
   <keylock hobtid="72058354120785920" dbid="24" objectname="DB1.dbo.MSmerge_genhistory" indexname="c1MSmerge_genhistory" id="lock94b448900" mode="X" associatedObjectId="72058354120785920">
    <owner-list>
     <owner id="process5c3d82bc8" mode="X"/>
    </owner-list>
    <waiter-list>
     <waiter id="process54d5dc8" mode="S" requestType="wait"/>
    </waiter-list>
   </keylock>
   <keylock hobtid="72058354120785920" dbid="24" objectname="DB1.dbo.MSmerge_genhistory" indexname="c1MSmerge_genhistory" id="lock771843d80" mode="U" associatedObjectId="72058354120785920">
    <owner-list>
     <owner id="process54d5dc8" mode="S"/>
    </owner-list>
    <waiter-list>
     <waiter id="process5c3d82bc8" mode="X" requestType="convert"/>
    </waiter-list>
   </keylock>
  </resource-list>
 </deadlock>
</deadlock-list>
21 авг 14, 10:39    [16472299]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить