-- Подсказка для массовых операций вставки-удаления. -- Как много записей можно обработать в одной транзакции без ущерба для производительности сервера. -- Предполагается, что при использовании не более 20% блокировок можно избежать эскалации блокировок. -- A hint for bulk insert-delete operations. -- How many records can be processed in a single transaction without sacrificing server performance. -- It is assumed that when using no more than 20% of locks, you can avoid escalating locks. -- Dmitry Gorchilin 20170503 -- select ' Lock Blocks Allocated/Lock Blocks, %'+ convert(varchar(30),100.*p2.cntr_value/p1.cntr_value)+ ' 20% lock: '+ convert(varchar(30),p1.cntr_value/5)+ ' Can use Lock:'+ convert(varchar(30),p1.cntr_value/5-p2.cntr_value) FROM sys.dm_os_performance_counters p1,sys.dm_os_performance_counters p2 where p1.counter_name = 'Lock Blocks Allocated' and p2.counter_name = 'Lock Blocks' DECLARE @i INT SELECT @i=p1.cntr_value/5-p2.cntr_value FROM sys.dm_os_performance_counters p1,sys.dm_os_performance_counters p2 where p1.counter_name = 'Lock Blocks Allocated' and p2.counter_name = 'Lock Blocks' IF @i>0 BEGIN SET ROWCOUNT @i SELECT 'ROWCOUNT='+CONVERT (VARCHAR(30),@i) --body of script END ELSE BEGIN SELECT 'DO NOT RUN SCRIPT NOW!' END SET ROWCOUNT 0