[et_pb_section fb_built="1" _builder_version="4.9.0" _module_preset="default" global_colors_info="{}"][et_pb_row column_structure="2_5,3_5" _builder_version="4.9.0" _module_preset="default" global_colors_info="{}"][et_pb_column type="2_5" _builder_version="4.9.0" _module_preset="default" global_colors_info="{}"][et_pb_image src="https://tripletech.gulp.digital/wp-content/uploads/2021/08/02-SQL-Server-Lock-e-Block-300×282.jpg" alt="O que é SQL Server Lock e Block" title_text="SQL Server Lock e Block" _builder_version="4.9.0" _module_preset="default" animation_style="slide" global_colors_info="{}"][/et_pb_image][/et_pb_column][et_pb_column type="3_5" _builder_version="4.9.0" _module_preset="default" global_colors_info="{}"][et_pb_text _builder_version="4.9.0" _module_preset="default" hover_enabled="0" global_colors_info="{}" sticky_enabled="0"]
O que é SQL Server Lock e Block?
Por padrão, o SQL Server usa Locking de forma “pessimista” – suas queries são naturalmente protetoras. Isso pode levar a problemas de Blocking que impeçam você de escalonar seu banco de dados SQL Server.
O artigo está separado em:
-
Contadores de desempenho relacionados a Lock
- Scripts para usar Blocked Process Report
[/et_pb_text][/et_pb_column][/et_pb_row][et_pb_row _builder_version=”4.9.0″ _module_preset=”default” global_colors_info=”{}”][et_pb_column type=”4_4″ _builder_version=”4.9.0″ _module_preset=”default” global_colors_info=”{}”][et_pb_text _builder_version=”4.9.0″ _module_preset=”default” hover_enabled=”0″ global_colors_info=”{}” sticky_enabled=”0″]
Esses são alguns contadores de performance que podem ser muito úteis para configurar alerta no SQL Server. Com base nesses contadores o SQL Server pode notificá-lo quando o bloqueio ultrapassar os limites definidos.
- SQL Server: General Statistics – Processes Blocked
- SQL Server: Locks – Lock Wait Time (ms)
- SQL Server: Locks – Number of Deadlocks/sec
[/et_pb_text][et_pb_image src="https://tripletech.gulp.digital/wp-content/uploads/2021/08/sql-server-count-performance.jpg" alt="contadores de performance do banco sql server" title_text="sql-server-count-performance" _builder_version="4.9.0" _module_preset="default" animation_style="fade" global_colors_info="{}"][/et_pb_image][et_pb_text _builder_version="4.9.11" _module_preset="default" hover_enabled="0" global_colors_info="{}" sticky_enabled="0"]
Script para usar Blocked Process Report
O “Blocked Process Report” existe há muito tempo no SQL Server – e ainda é uma ferramenta útil e usada por consultoria de banco de dados e consultores SQL Server.
Por padrão no SQL Server, o deadlock monitora a cada 5 segundos para verificar se suas queries estão em um “deadly embrace”. Você pode ativar uma opção no SQL Server para verificar o blocking e gerar um relatório.
AVISO: Você só deve ativar o relatório de Blocked Process quando o monitoramento for superior a cinco segundos. A Microsoft avisa que, se você definir de 1 a 4 segundos, poderá fazer com que o monitor de deadlock fique ativo continuamente e prejudique o desempenho do banco de dados.
Para usar o Blocked Process Report, é necessário configurar um trace que procure o evento “Relatório de Processo Bloqueado” em “Erros e Avisos”. Recomendamos usar um server side trace e usá-lo apenas quando for necessário.
[/et_pb_text][/et_pb_column][/et_pb_row][et_pb_row _builder_version="4.9.0" _module_preset="default" global_colors_info="{}"][et_pb_column type="4_4" _builder_version="4.9.0" _module_preset="default" global_colors_info="{}"][et_pb_testimonial portrait_url="https://tripletech.gulp.digital/wp-content/uploads/2016/05/email-Alertas.png" quote_icon="off" _builder_version="4.9.0" _module_preset="default" hover_enabled="0" global_colors_info="{}" sticky_enabled="0"]
Os scripts nesse artigo, são exemplos de como realizar essas tarefas – você deve testar e revisar de acordo com o seu ambiente de banco de dados. Sempre utilize ambiente de teste e/ou homologação e tenha backup de seu ambiente.
Lembre-se, a execução dos scripts é por sua própria conta e risco.
[/et_pb_testimonial][/et_pb_column][/et_pb_row][et_pb_row column_structure=”1_2,1_2″ _builder_version=”4.9.11″ _module_preset=”default” global_colors_info=”{}”][et_pb_column type=”1_2″ _builder_version=”4.9.11″ _module_preset=”default” global_colors_info=”{}”][et_pb_cta title=”Database Care” button_url=”https://tripletech.com.br/database-care.html” button_text=”Saiba mais!” _builder_version=”4.9.11″ _module_preset=”default” background_color=”#cc5b57″ custom_padding=”13px||16px|||” animation_style=”slide” border_radii=”on|30px|30px|30px|30px” box_shadow_style=”preset2″ text_shadow_style=”preset1″ global_colors_info=”{}”]
Seu banco de dados saudável e monitorado por uma equipe especializada em SQL Server e Oracle Database
[/et_pb_cta][/et_pb_column][et_pb_column type=”1_2″ _builder_version=”4.9.11″ _module_preset=”default” global_colors_info=”{}”][et_pb_cta title=”DBA Remoto” button_url=”https://tripletech.com.br/dba-remoto.html” button_text=”Saiba mais!” _builder_version=”4.9.11″ _module_preset=”default” background_color=”#cc5b57″ custom_padding=”13px||16px||false|false” animation_style=”slide” border_radii=”on|30px|30px|30px|30px” box_shadow_style=”preset2″ text_shadow_style=”preset1″ global_colors_info=”{}”]
Seu banco de dados em mãos especializadas. Tenhas as melhorias práticas do mercado aplicadas em seu SQL Server ou Oracle Database
[/et_pb_cta][/et_pb_column][/et_pb_row][et_pb_row use_custom_gutter=”on” gutter_width=”1″ _builder_version=”4.9.0″ _module_preset=”default” custom_margin=”0px||0px||false|false” global_colors_info=”{}”][et_pb_column type=”4_4″ _builder_version=”4.9.0″ _module_preset=”default” global_colors_info=”{}”][et_pb_text _builder_version=”4.9.0″ _module_preset=”default” custom_padding=”13px|||||” global_colors_info=”{}”]
Então, vamos lá!
Etapa 1 : ative Blocked Process Report
[/et_pb_text][et_pb_text _builder_version=”4.9.0″ _module_preset=”default” text_font=”Courier Prime||||||||” text_text_color=”#000000″ text_font_size=”10px” text_line_height=”1em” background_color=”#eff0f1″ custom_margin=”0px|||60px|false|false” custom_padding=”6px|10px|6px|10px|true|true” border_width_top=”10px” border_color_top=”#7CDA24″ global_colors_info=”{}”]
–Make sure you don’t have any pending changes
SELECT *
FROM sys.configurations
WHERE value <> value_in_use;
GO
exec sp_configure ‘show advanced options’, 1;
GO
RECONFIGURE
GO
exec sp_configure ‘blocked process threshold (s)’, 20;
GO
RECONFIGURE
GO
[/et_pb_text][/et_pb_column][/et_pb_row][et_pb_row use_custom_gutter=”on” gutter_width=”1″ _builder_version=”4.9.0″ _module_preset=”default” custom_margin=”0px||0px||false|false” global_colors_info=”{}”][et_pb_column type=”4_4″ _builder_version=”4.9.0″ _module_preset=”default” global_colors_info=”{}”][et_pb_text _builder_version=”4.9.0″ _module_preset=”default” custom_padding=”7px|||||” hover_enabled=”0″ global_colors_info=”{}” sticky_enabled=”0″]
Etapa 2 : configurar o rastreamento para o relatório de processo bloqueado. Execute-o como server side trace.
- Deve conter um evento: Errors and Warnings -> Blocked Process Report.
- Precisa de apenas duas colunas: Text, spid
Este server side trace será executado por cinco minutos e parará automaticamente. Você deve alterar o caminho para um diretório em que o SQL Server tenha permissão de gravação.
[/et_pb_text][et_pb_text _builder_version=”4.9.0″ _module_preset=”default” text_font=”Courier Prime||||||||” text_text_color=”#000000″ text_font_size=”10px” text_line_height=”1em” background_color=”#eff0f1″ custom_margin=”0px|||60px|false|false” custom_padding=”6px|10px|6px|10px|true|true” border_width_top=”10px” border_color_top=”#7CDA24″ global_colors_info=”{}”]
— Create a Queue
declare @rc int
declare @TraceID int
declare @maxfilesize bigint
declare @DateTime datetime
———Added a function here:
set @DateTime = DATEADD(mi,5,getdate()); /* Run for five minutes */
set @maxfilesize = 5
— Please replace the text InsertFileNameHere, with an appropriate
— filename prefixed by a path, e.g., c:\MyFolder\MyTrace. The .trc extension
— will be appended to the filename automatically. If you are writing from
— remote server to local drive, please use UNC path and make sure server has
— write access to your network share
———–Set my filename here:
exec @rc = sp_trace_create @TraceID output, 0, N’S:\Traces\BlockedProcessReportDemo’, @maxfilesize, @Datetime
if (@rc != 0) goto error
— Client side File and Table cannot be scripted
— Set the events
declare @on bit
set @on = 1
exec sp_trace_setevent @TraceID, 137, 1, @on
exec sp_trace_setevent @TraceID, 137, 12, @on
— Set the Filters
declare @intfilter int
declare @bigintfilter bigint
— Set the trace status to start
exec sp_trace_setstatus @TraceID, 1
— display trace id for future references
select TraceID=@TraceID
goto finish
error:
select ErrorCode=@rc
finish:
go
[/et_pb_text][/et_pb_column][/et_pb_row][et_pb_row use_custom_gutter=”on” gutter_width=”1″ _builder_version=”4.9.0″ _module_preset=”default” custom_margin=”0px||0px||false|false” global_colors_info=”{}”][et_pb_column type=”4_4″ _builder_version=”4.9.0″ _module_preset=”default” global_colors_info=”{}”][et_pb_text _builder_version=”4.9.0″ _module_preset=”default” global_colors_info=”{}”]
Etapa 3 : Olhe os traces em execução e pegue o trace ID:
[/et_pb_text][et_pb_text _builder_version=”4.9.0″ _module_preset=”default” text_font=”Courier Prime||||||||” text_text_color=”#000000″ text_font_size=”10px” text_line_height=”1em” background_color=”#eff0f1″ custom_margin=”0px|||60px|false|false” custom_padding=”6px|10px|6px|10px|true|true” border_width_top=”10px” border_color_top=”#7CDA24″ global_colors_info=”{}”]
SELECT * from sys.traces;
GO
[/et_pb_text][/et_pb_column][/et_pb_row][et_pb_row use_custom_gutter=”on” gutter_width=”1″ _builder_version=”4.9.0″ _module_preset=”default” custom_margin=”0px||0px||false|false” global_colors_info=”{}”][et_pb_column type=”4_4″ _builder_version=”4.9.0″ _module_preset=”default” global_colors_info=”{}”][et_pb_text _builder_version=”4.9.0″ _module_preset=”default” global_colors_info=”{}”]
Pare um rastreamento, se necessário
[/et_pb_text][et_pb_text _builder_version=”4.9.0″ _module_preset=”default” text_font=”Courier Prime||||||||” text_text_color=”#000000″ text_font_size=”10px” text_line_height=”1em” background_color=”#eff0f1″ custom_margin=”0px|||60px|false|false” custom_padding=”6px|10px|6px|10px|true|true” border_width_top=”10px” border_color_top=”#7CDA24″ global_colors_info=”{}”]
–Plug in the correct traceid from the query above
EXEC sp_trace_setstatus @traceid =2, @status = 0; — stop trace (assuming it’s trace ID 2)
GO
EXEC sp_trace_setstatus @traceid =2, @status = 2; — close trace (assuming it’s trace ID 2)
GO
[/et_pb_text][/et_pb_column][/et_pb_row][et_pb_row use_custom_gutter=”on” gutter_width=”1″ _builder_version=”4.9.0″ _module_preset=”default” custom_margin=”0px||0px||false|false” global_colors_info=”{}”][et_pb_column type=”4_4″ _builder_version=”4.9.0″ _module_preset=”default” global_colors_info=”{}”][et_pb_text _builder_version=”4.9.0″ _module_preset=”default” global_colors_info=”{}”]Etapa 4 : Agora leia os dados gerados pelo relatório do processos bloqueados.
Neste exemplo, vamos usar o visualizador de relatório de processo bloqueado gratuito de Michael J Swart .[/et_pb_text][et_pb_text _builder_version=”4.9.0″ _module_preset=”default” text_font=”Courier Prime||||||||” text_text_color=”#000000″ text_font_size=”10px” text_line_height=”1em” background_color=”#eff0f1″ custom_margin=”0px|||60px|false|false” custom_padding=”6px|10px|6px|10px|true|true” border_width_top=”10px” border_color_top=”#7CDA24″ global_colors_info=”{}”]
exec dbo.sp_blocked_process_report_viewer
@Source=’S:\Traces\BlockedProcessReportDemo.trc’;
GO
[/et_pb_text][/et_pb_column][/et_pb_row][et_pb_row use_custom_gutter=”on” gutter_width=”1″ _builder_version=”4.9.0″ _module_preset=”default” custom_margin=”0px||0px||false|false” global_colors_info=”{}”][et_pb_column type=”4_4″ _builder_version=”4.9.0″ _module_preset=”default” global_colors_info=”{}”][et_pb_text _builder_version=”4.9.0″ _module_preset=”default” global_colors_info=”{}”]
Etapa 5 : Limpe!
Não se esqueça desta etapa.
[/et_pb_text][et_pb_text _builder_version=”4.9.0″ _module_preset=”default” text_font=”Courier Prime||||||||” text_text_color=”#000000″ text_font_size=”10px” text_line_height=”1em” background_color=”#eff0f1″ custom_margin=”0px|||60px|false|false” custom_padding=”6px|10px|6px|10px|true|true” border_width_top=”10px” border_color_top=”#7CDA24″ global_colors_info=”{}”]
–Make sure your trace is gone
SELECT * from sys.traces;
GO
–Turn off the blocked process report when you’re not using it.
–Make sure you don’t have any pending changes
SELECT *
FROM sys.configurations
WHERE value <> value_in_use;
GO
exec sp_configure ‘blocked process threshold (s)’, 0;
GO
RECONFIGURE
GO
exec sp_configure ‘blocked process threshold (s)’;
GO
[/et_pb_text][et_pb_text _builder_version=”4.9.0″ _module_preset=”default” global_colors_info=”{}”]
Espero que nosso artigo tenha ajudado você a entender mais sobre Block e Locking.
Caso precise de uma consultoria em banco de dados SQL Server ou Oracle, fale conosco.
[/et_pb_text][/et_pb_column][/et_pb_row][et_pb_row _builder_version=”4.9.0″ _module_preset=”default” global_colors_info=”{}”][et_pb_column type=”4_4″ _builder_version=”4.9.0″ _module_preset=”default” global_colors_info=”{}”][et_pb_cta title=”Fale com um especialista” button_url=”https://tripletech.com.br/#depoimentos” button_text=”Fale agora!” _builder_version=”4.9.11″ _module_preset=”default” background_color=”#9e2525″ global_colors_info=”{}”]
Fale com um especialista agora, e tenha a melhor solução de TI para sua empresa.
[/et_pb_cta][/et_pb_column][/et_pb_row][et_pb_row _builder_version=”4.9.0″ _module_preset=”default” global_colors_info=”{}”][et_pb_column type=”4_4″ _builder_version=”4.9.0″ _module_preset=”default” global_colors_info=”{}”][et_pb_text _builder_version=”4.9.0″ _module_preset=”default” global_colors_info=”{}”]
Acompanhe a Tripletech nas redes sociais:
[/et_pb_text][et_pb_social_media_follow _builder_version=”4.9.0″ _module_preset=”default” text_orientation=”center” global_colors_info=”{}”][et_pb_social_media_follow_network social_network=”facebook” url=”https://www.facebook.com/tripletechti” _builder_version=”4.9.0″ _module_preset=”default” background_color=”#3b5998″ global_colors_info=”{}” follow_button=”off” url_new_window=”on”]facebook[/et_pb_social_media_follow_network][et_pb_social_media_follow_network social_network=”twitter” url=”https://www.twitter.com/tripletech” _builder_version=”4.9.0″ _module_preset=”default” background_color=”#00aced” global_colors_info=”{}” follow_button=”off” url_new_window=”on”]twitter[/et_pb_social_media_follow_network][et_pb_social_media_follow_network social_network=”linkedin” url=”https://www.linkedin.com/company/tripletech-it-solutions” _builder_version=”4.9.0″ _module_preset=”default” background_color=”#007bb6″ global_colors_info=”{}” follow_button=”off” url_new_window=”on”]linkedin[/et_pb_social_media_follow_network][et_pb_social_media_follow_network social_network=”instagram” url=”https://www.instagram.com/triple.tech/” _builder_version=”4.9.0″ _module_preset=”default” background_color=”#ea2c59″ global_colors_info=”{}” follow_button=”off” url_new_window=”on”]instagram[/et_pb_social_media_follow_network][/et_pb_social_media_follow][/et_pb_column][/et_pb_row][/et_pb_section]
Ir para o conteúdo



