<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>MSSQL &#8211; Furushima</title>
	<atom:link href="https://furushima.com.br/blog/tag/mssql/feed/" rel="self" type="application/rss+xml" />
	<link>https://furushima.com.br</link>
	<description>- Consultoria de Banco de Dados &#124; Furushima</description>
	<lastBuildDate>Thu, 13 Mar 2025 22:13:20 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://furushima.com.br/wp-content/uploads/2024/02/cropped-favicon-32x32.png</url>
	<title>MSSQL &#8211; Furushima</title>
	<link>https://furushima.com.br</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Como ativar o Slow Query log no SQL Server?</title>
		<link>https://furushima.com.br/blog/como-ativar-o-slow-query-log-no-sql-server/</link>
		
		<dc:creator><![CDATA[Matsuo]]></dc:creator>
		<pubDate>Thu, 13 Mar 2025 18:25:39 +0000</pubDate>
				<category><![CDATA[Banco De Dados]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[MSSQL]]></category>
		<category><![CDATA[TUNING]]></category>
		<guid isPermaLink="false">https://furushima.com.br/?p=2655</guid>

					<description><![CDATA[Como Capturar Queries Lentas no SQL Server? Se você vem do mundo MySQL, PostgreSQL ou até mesmo Oracle, pode já ter se perguntado: como capturar queries lentas no SQL Server? No MySQL, temos o slow_query_log , no PostgreSQL, o pg_stat_statements/ slowquery e Oracle AWR/ASH* podem ajudar. Mas e no SQL Server? Podemos analisar queries em [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Como Capturar Queries Lentas no SQL Server?</h2>



<p>Se você vem do mundo MySQL, PostgreSQL ou até mesmo Oracle, pode já ter se perguntado: <strong>como capturar queries lentas no SQL Server?</strong></p>



<p>No MySQL, temos o <code>slow_query_log</code> , no PostgreSQL, o <code>pg_stat_statements</code>/ slowquery  e Oracle AWR/ASH* podem ajudar. Mas e no SQL Server? </p>



<p>Podemos analisar queries em execução no momento utilizando <code>sys.dm_exec_requests</code>, mas e se quisermos consultar o histórico?</p>



<p>Err.. Dai habilitamos o Query Store!</p>



<p>Uma boa solução o <strong>Query Store</strong>. Ele permite armazenar e analisar estatísticas de execução de queries ao longo do tempo. No entanto, dependendo do volume de dados e da granularidade desejada, ele pode não ser a melhor opção para um monitoramento detalhado.</p>



<p>Foi nesse contexto que pesquisei alternativas e encontrei uma solução eficiente: <strong>o uso de Extended Events (XEvents)</strong>. Se você também busca uma forma confiável de capturar queries lentas no SQL Server, este artigo é para você.</p>



<p><strong>Referências:</strong></p>



<ul class="wp-block-list">
<li>Documentação oficial da Microsoft sobre <a href="https://learn.microsoft.com/en-us/sql/relational-databases/performance/monitoring-performance-by-using-the-query-store?view=sql-server-ver16">Query Store</a></li>



<li>Blog do <a href="https://www.dirceuresende.com/">Dirceu Resende</a></li>
</ul>



<p></p>



<p><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f4cc.png" alt="📌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Monitorando Queries Lentas com Extended Events</p>



<p>A partir do SQL Server 2012, os <strong>Extended Events (XEvents)</strong> se tornaram uma das melhores formas de capturar eventos internos do SQL Server. Eles funcionam como um sistema de auditoria leve e personalizável, permitindo registrar queries lentas, deadlocks, commits e por ai vai..</p>



<p>Podemos compará-los a <strong>triggers</strong>, mas ao invés de serem executados em nível de tabela, eles capturam eventos no nível da instância do SQL Server.</p>



<p><a href="https://learn.microsoft.com/en-us/sql/relational-databases/extended-events/quick-start-extended-events-in-sql-server?view=sql-server-ver16">Extended Events (XEvents)</a></p>



<h2 class="wp-block-heading">1º Criar o Evento de Captura</h2>



<p>Antes de tudo, precisamos criar um <strong>evento de captura</strong> para registrar as queries demoradas. Para isso, utilizaremos o Extended Events, garantindo que os arquivos de saída sejam gravados em um diretório onde o SQL Server tenha permissão de escrita, no meu caso.</p>



<p>K:\SLOW_QUERIES</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="CREATE EVENT SESSION [SLOW_QUERIES] ON SERVER  
ADD EVENT sqlserver.sql_batch_completed (  
    ACTION (  
        sqlserver.session_id,  
        sqlserver.client_app_name,  
        sqlserver.client_hostname,  
        sqlserver.database_name,  
        sqlserver.username,  
        sqlserver.session_nt_username,  
        sqlserver.session_server_principal_name,  
        sqlserver.sql_text  
    )  
    WHERE duration &gt; 5000000  -- AJUSTE O TEMPO CONFORME SUA NECESSIDADE
)  
ADD TARGET package0.event_file (  
    SET filename = N'K:\SLOW_QUERIES\slow.xel',   -- AQUI TAMBEM, AJUSTE SEU DIRETORIO
        max_file_size = 10,  
        max_rollover_files = 10  
)  
WITH (STARTUP_STATE = ON);  
GO  

-- Ativa o Extended Event
ALTER EVENT SESSION [SLOW_QUERIES] ON SERVER STATE = START
GO" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #569CD6">CREATE</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">EVENT</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">SESSION</span><span style="color: #D4D4D4"> [SLOW_QUERIES] </span><span style="color: #569CD6">ON</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">SERVER</span><span style="color: #D4D4D4">  </span></span>
<span class="line"><span style="color: #569CD6">ADD</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">EVENT</span><span style="color: #D4D4D4"> sqlserver.sql_batch_completed (  </span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">ACTION</span><span style="color: #D4D4D4"> (  </span></span>
<span class="line"><span style="color: #D4D4D4">        sqlserver.session_id,  </span></span>
<span class="line"><span style="color: #D4D4D4">        sqlserver.client_app_name,  </span></span>
<span class="line"><span style="color: #D4D4D4">        sqlserver.client_hostname,  </span></span>
<span class="line"><span style="color: #D4D4D4">        sqlserver.database_name,  </span></span>
<span class="line"><span style="color: #D4D4D4">        sqlserver.username,  </span></span>
<span class="line"><span style="color: #D4D4D4">        sqlserver.session_nt_username,  </span></span>
<span class="line"><span style="color: #D4D4D4">        sqlserver.session_server_principal_name,  </span></span>
<span class="line"><span style="color: #D4D4D4">        sqlserver.sql_text  </span></span>
<span class="line"><span style="color: #D4D4D4">    )  </span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">WHERE</span><span style="color: #D4D4D4"> duration &gt; </span><span style="color: #B5CEA8">5000000</span><span style="color: #D4D4D4">  </span><span style="color: #6A9955">-- AJUSTE O TEMPO CONFORME SUA NECESSIDADE</span></span>
<span class="line"><span style="color: #D4D4D4">)  </span></span>
<span class="line"><span style="color: #569CD6">ADD</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">TARGET</span><span style="color: #D4D4D4"> package0.event_file (  </span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">SET</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">filename</span><span style="color: #D4D4D4"> = </span><span style="color: #CE9178">N&#39;K:\SLOW_QUERIES\slow.xel&#39;</span><span style="color: #D4D4D4">,   </span><span style="color: #6A9955">-- AQUI TAMBEM, AJUSTE SEU DIRETORIO</span></span>
<span class="line"><span style="color: #D4D4D4">        max_file_size = </span><span style="color: #B5CEA8">10</span><span style="color: #D4D4D4">,  </span></span>
<span class="line"><span style="color: #D4D4D4">        max_rollover_files = </span><span style="color: #B5CEA8">10</span><span style="color: #D4D4D4">  </span></span>
<span class="line"><span style="color: #D4D4D4">)  </span></span>
<span class="line"><span style="color: #569CD6">WITH</span><span style="color: #D4D4D4"> (STARTUP_STATE = </span><span style="color: #569CD6">ON</span><span style="color: #D4D4D4">);  </span></span>
<span class="line"><span style="color: #569CD6">GO</span><span style="color: #D4D4D4">  </span></span>
<span class="line"></span>
<span class="line"><span style="color: #6A9955">-- Ativa o Extended Event</span></span>
<span class="line"><span style="color: #569CD6">ALTER</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">EVENT</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">SESSION</span><span style="color: #D4D4D4"> [SLOW_QUERIES] </span><span style="color: #569CD6">ON</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">SERVER</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">STATE</span><span style="color: #D4D4D4"> = </span><span style="color: #569CD6">START</span></span>
<span class="line"><span style="color: #569CD6">GO</span></span></code></pre></div>



<p>neste caso iremos coletar tudo que for acima de 5 segundos , com 10 arquivos de no maximo 10MB, em D:\SLOW_QUERIES\.</p>



<h2 class="wp-block-heading">2º Criar uma Tabela para salvar estes dados</h2>



<p>Agora, precisamos de um local para armazenar os dados coletados pelo XEvents. Criamos uma tabela que receberá as informações capturadas.</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="CREATE TABLE dbo.Historico_Query_Lenta (
    [Dt_Evento] DATETIME,
    [session_id] INT,
    [database_name] VARCHAR(128),
    [username] VARCHAR(128),
    [session_server_principal_name] VARCHAR(128),
    [session_nt_username] VARCHAR(128),
    [client_hostname] VARCHAR(128),
    [client_app_name] VARCHAR(128),
    [duration] DECIMAL(18, 2),
    [cpu_time] DECIMAL(18, 2),
    [logical_reads] BIGINT,
    [physical_reads] BIGINT,
    [writes] BIGINT,
    [row_count] BIGINT,
    [sql_text] XML,
    [batch_text] XML,
    [result] VARCHAR(100)
) WITH(DATA_COMPRESSION=PAGE)
GO" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #569CD6">CREATE</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">TABLE</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">dbo</span><span style="color: #D4D4D4">.Historico_Query_Lenta (</span></span>
<span class="line"><span style="color: #D4D4D4">    [Dt_Evento] </span><span style="color: #569CD6">DATETIME</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">    [session_id] </span><span style="color: #569CD6">INT</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">    [database_name] </span><span style="color: #569CD6">VARCHAR</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">128</span><span style="color: #D4D4D4">),</span></span>
<span class="line"><span style="color: #D4D4D4">    [username] </span><span style="color: #569CD6">VARCHAR</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">128</span><span style="color: #D4D4D4">),</span></span>
<span class="line"><span style="color: #D4D4D4">    [session_server_principal_name] </span><span style="color: #569CD6">VARCHAR</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">128</span><span style="color: #D4D4D4">),</span></span>
<span class="line"><span style="color: #D4D4D4">    [session_nt_username] </span><span style="color: #569CD6">VARCHAR</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">128</span><span style="color: #D4D4D4">),</span></span>
<span class="line"><span style="color: #D4D4D4">    [client_hostname] </span><span style="color: #569CD6">VARCHAR</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">128</span><span style="color: #D4D4D4">),</span></span>
<span class="line"><span style="color: #D4D4D4">    [client_app_name] </span><span style="color: #569CD6">VARCHAR</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">128</span><span style="color: #D4D4D4">),</span></span>
<span class="line"><span style="color: #D4D4D4">    [duration] </span><span style="color: #569CD6">DECIMAL</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">18</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">2</span><span style="color: #D4D4D4">),</span></span>
<span class="line"><span style="color: #D4D4D4">    [cpu_time] </span><span style="color: #569CD6">DECIMAL</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">18</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">2</span><span style="color: #D4D4D4">),</span></span>
<span class="line"><span style="color: #D4D4D4">    [logical_reads] </span><span style="color: #569CD6">BIGINT</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">    [physical_reads] </span><span style="color: #569CD6">BIGINT</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">    [writes] </span><span style="color: #569CD6">BIGINT</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">    [row_count] </span><span style="color: #569CD6">BIGINT</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">    [sql_text] </span><span style="color: #569CD6">XML</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">    [batch_text] </span><span style="color: #569CD6">XML</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">    [result] </span><span style="color: #569CD6">VARCHAR</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">100</span><span style="color: #D4D4D4">)</span></span>
<span class="line"><span style="color: #D4D4D4">) </span><span style="color: #569CD6">WITH</span><span style="color: #D4D4D4">(</span><span style="color: #569CD6">DATA_COMPRESSION</span><span style="color: #D4D4D4">=</span><span style="color: #569CD6">PAGE</span><span style="color: #D4D4D4">)</span></span>
<span class="line"><span style="color: #569CD6">GO</span></span></code></pre></div>



<h2 class="wp-block-heading">3º Criar uma Procedure para Captura dos Dados</h2>



<p>O próximo passo é criar uma <strong>Stored Procedure</strong> para extrair os dados do Extended Events e armazená-los na tabela criada no Passo 2, crie um database de sua escolha , recomendo a ter sempre um database administrativo para tais acoes.</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code=" 
CREATE PROCEDURE dbo.stpCarga_Query_Lenta
AS
BEGIN
    
    
    DECLARE 
        @TimeZone INT = DATEDIFF(HOUR, GETUTCDATE(), GETDATE()),
        @Dt_Ultimo_Registro DATETIME = ISNULL((SELECT MAX(Dt_Evento) FROM dbo.Historico_Query_Lenta), '1900-01-01')
 
 
    IF (OBJECT_ID('tempdb..#Eventos') IS NOT NULL) DROP TABLE #Eventos
    ;WITH CTE AS (
        SELECT CONVERT(XML, event_data) AS event_data
        FROM sys.fn_xe_file_target_read_file(N'K:\SLOW_QUERIES\slow*.xel', NULL, NULL, NULL)
    )
    SELECT
        DATEADD(HOUR, @TimeZone, CTE.event_data.value('(//event/@timestamp)[1]', 'datetime')) AS Dt_Evento,
        CTE.event_data
    INTO
        #Eventos
    FROM
        CTE
    WHERE
        DATEADD(HOUR, @TimeZone, CTE.event_data.value('(//event/@timestamp)[1]', 'datetime')) &gt; @Dt_Ultimo_Registro
    
 
    INSERT INTO dbo.Historico_Query_Lenta
    SELECT
        A.Dt_Evento,
        xed.event_data.value('(action[@name=&quot;session_id&quot;]/value)[1]', 'int') AS session_id,
        xed.event_data.value('(action[@name=&quot;database_name&quot;]/value)[1]', 'varchar(128)') AS [database_name],
        xed.event_data.value('(action[@name=&quot;username&quot;]/value)[1]', 'varchar(128)') AS username,
        xed.event_data.value('(action[@name=&quot;session_server_principal_name&quot;]/value)[1]', 'varchar(128)') AS session_server_principal_name,
        xed.event_data.value('(action[@name=&quot;session_nt_username&quot;]/value)[1]', 'varchar(128)') AS [session_nt_username],
        xed.event_data.value('(action[@name=&quot;client_hostname&quot;]/value)[1]', 'varchar(128)') AS [client_hostname],
        xed.event_data.value('(action[@name=&quot;client_app_name&quot;]/value)[1]', 'varchar(128)') AS [client_app_name],
        CAST(xed.event_data.value('(//data[@name=&quot;duration&quot;]/value)[1]', 'bigint') / 1000000.0 AS NUMERIC(18, 2)) AS duration,
        CAST(xed.event_data.value('(//data[@name=&quot;cpu_time&quot;]/value)[1]', 'bigint') / 1000000.0 AS NUMERIC(18, 2)) AS cpu_time,
        xed.event_data.value('(//data[@name=&quot;logical_reads&quot;]/value)[1]', 'bigint') AS logical_reads,
        xed.event_data.value('(//data[@name=&quot;physical_reads&quot;]/value)[1]', 'bigint') AS physical_reads,
        xed.event_data.value('(//data[@name=&quot;writes&quot;]/value)[1]', 'bigint') AS writes,
        xed.event_data.value('(//data[@name=&quot;row_count&quot;]/value)[1]', 'bigint') AS row_count,
        TRY_CAST(xed.event_data.value('(//action[@name=&quot;sql_text&quot;]/value)[1]', 'varchar(max)') AS XML) AS sql_text,
        TRY_CAST(xed.event_data.value('(//data[@name=&quot;batch_text&quot;]/value)[1]', 'varchar(max)') AS XML) AS batch_text,
        xed.event_data.value('(//data[@name=&quot;result&quot;]/text)[1]', 'varchar(100)') AS result
    FROM
        #Eventos A
        CROSS APPLY A.event_data.nodes('//event') AS xed (event_data)
 
 
END" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #DCDCAA">CREATE</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">PROCEDURE</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">dbo.stpCarga_Query_Lenta</span></span>
<span class="line"><span style="color: #DCDCAA">AS</span></span>
<span class="line"><span style="color: #DCDCAA">BEGIN</span></span>
<span class="line"><span style="color: #D4D4D4">    </span></span>
<span class="line"><span style="color: #D4D4D4">    </span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #DCDCAA">DECLARE</span><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">@TimeZone</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">INT</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">=</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">DATEDIFF</span><span style="color: #D4D4D4">(</span><span style="color: #DCDCAA">HOUR,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">GETUTCDATE</span><span style="color: #D4D4D4">()</span><span style="color: #CE9178">,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">GETDATE</span><span style="color: #D4D4D4">())</span><span style="color: #CE9178">,</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">@Dt_Ultimo_Registro</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">DATETIME</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">=</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">ISNULL</span><span style="color: #D4D4D4">((SELECT MAX(Dt_Evento) FROM dbo.Historico_Query_Lenta), &#39;</span><span style="color: #B5CEA8">1900</span><span style="color: #D4D4D4">-</span><span style="color: #B5CEA8">01</span><span style="color: #D4D4D4">-</span><span style="color: #B5CEA8">01</span><span style="color: #D4D4D4">&#39;)</span></span>
<span class="line"><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #DCDCAA">IF</span><span style="color: #D4D4D4"> (OBJECT_ID(</span><span style="color: #CE9178">&#39;tempdb..#Eventos&#39;</span><span style="color: #D4D4D4">) IS NOT NULL) DROP TABLE </span><span style="color: #6A9955">#Eventos</span></span>
<span class="line"><span style="color: #D4D4D4">    ;</span><span style="color: #DCDCAA">WITH</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">CTE</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">AS</span><span style="color: #D4D4D4"> (</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">SELECT</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">CONVERT</span><span style="color: #D4D4D4">(</span><span style="color: #DCDCAA">XML,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">event_data</span><span style="color: #D4D4D4">) </span><span style="color: #CE9178">AS</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">event_data</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">FROM</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">sys.fn_xe_file_target_read_file</span><span style="color: #D4D4D4">(</span><span style="color: #DCDCAA">N</span><span style="color: #DCDCAA">&#39;K:\SLOW_QUERIES\slow*.xel&#39;</span><span style="color: #DCDCAA">,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">NULL,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">NULL,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">NULL</span><span style="color: #D4D4D4">)</span></span>
<span class="line"><span style="color: #D4D4D4">    )</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #DCDCAA">SELECT</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">DATEADD(HOUR,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">@TimeZone,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">CTE.event_data.value</span><span style="color: #D4D4D4">(</span><span style="color: #DCDCAA">&#39;(//event/@timestamp)[1]&#39;</span><span style="color: #DCDCAA">,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;datetime&#39;</span><span style="color: #D4D4D4">)) AS Dt_Evento,</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">CTE.event_data</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #DCDCAA">INTO</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #6A9955">#Eventos</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #DCDCAA">FROM</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">CTE</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #DCDCAA">WHERE</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">DATEADD(HOUR,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">@TimeZone,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">CTE.event_data.value</span><span style="color: #D4D4D4">(</span><span style="color: #DCDCAA">&#39;(//event/@timestamp)[1]&#39;</span><span style="color: #DCDCAA">,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;datetime&#39;</span><span style="color: #D4D4D4">)) &gt; @Dt_Ultimo_Registro</span></span>
<span class="line"><span style="color: #D4D4D4">    </span></span>
<span class="line"><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #DCDCAA">INSERT</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">INTO</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">dbo.Historico_Query_Lenta</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #DCDCAA">SELECT</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">A.Dt_Evento,</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">xed.event_data.value(</span><span style="color: #DCDCAA">&#39;(action[@name=&quot;session_id&quot;]/value)[1]&#39;</span><span style="color: #DCDCAA">,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;int&#39;</span><span style="color: #D4D4D4">) AS session_id,</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">xed.event_data.value(</span><span style="color: #DCDCAA">&#39;(action[@name=&quot;database_name&quot;]/value)[1]&#39;</span><span style="color: #DCDCAA">,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;varchar(128)&#39;</span><span style="color: #D4D4D4">) AS [database_name],</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">xed.event_data.value(</span><span style="color: #DCDCAA">&#39;(action[@name=&quot;username&quot;]/value)[1]&#39;</span><span style="color: #DCDCAA">,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;varchar(128)&#39;</span><span style="color: #D4D4D4">) AS username,</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">xed.event_data.value(</span><span style="color: #DCDCAA">&#39;(action[@name=&quot;session_server_principal_name&quot;]/value)[1]&#39;</span><span style="color: #DCDCAA">,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;varchar(128)&#39;</span><span style="color: #D4D4D4">) AS session_server_principal_name,</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">xed.event_data.value(</span><span style="color: #DCDCAA">&#39;(action[@name=&quot;session_nt_username&quot;]/value)[1]&#39;</span><span style="color: #DCDCAA">,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;varchar(128)&#39;</span><span style="color: #D4D4D4">) AS [session_nt_username],</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">xed.event_data.value(</span><span style="color: #DCDCAA">&#39;(action[@name=&quot;client_hostname&quot;]/value)[1]&#39;</span><span style="color: #DCDCAA">,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;varchar(128)&#39;</span><span style="color: #D4D4D4">) AS [client_hostname],</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">xed.event_data.value(</span><span style="color: #DCDCAA">&#39;(action[@name=&quot;client_app_name&quot;]/value)[1]&#39;</span><span style="color: #DCDCAA">,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;varchar(128)&#39;</span><span style="color: #D4D4D4">) AS [client_app_name],</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">CAST(xed.event_data.value(</span><span style="color: #DCDCAA">&#39;(//data[@name=&quot;duration&quot;]/value)[1]&#39;</span><span style="color: #DCDCAA">,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;bigint&#39;</span><span style="color: #D4D4D4">) / 1000000.0 AS NUMERIC(</span><span style="color: #DCDCAA">18,</span><span style="color: #D4D4D4"> </span><span style="color: #B5CEA8">2</span><span style="color: #D4D4D4">)) AS duration,</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">CAST(xed.event_data.value(</span><span style="color: #DCDCAA">&#39;(//data[@name=&quot;cpu_time&quot;]/value)[1]&#39;</span><span style="color: #DCDCAA">,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;bigint&#39;</span><span style="color: #D4D4D4">) / 1000000.0 AS NUMERIC(</span><span style="color: #DCDCAA">18,</span><span style="color: #D4D4D4"> </span><span style="color: #B5CEA8">2</span><span style="color: #D4D4D4">)) AS cpu_time,</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">xed.event_data.value(</span><span style="color: #DCDCAA">&#39;(//data[@name=&quot;logical_reads&quot;]/value)[1]&#39;</span><span style="color: #DCDCAA">,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;bigint&#39;</span><span style="color: #D4D4D4">) AS logical_reads,</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">xed.event_data.value(</span><span style="color: #DCDCAA">&#39;(//data[@name=&quot;physical_reads&quot;]/value)[1]&#39;</span><span style="color: #DCDCAA">,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;bigint&#39;</span><span style="color: #D4D4D4">) AS physical_reads,</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">xed.event_data.value(</span><span style="color: #DCDCAA">&#39;(//data[@name=&quot;writes&quot;]/value)[1]&#39;</span><span style="color: #DCDCAA">,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;bigint&#39;</span><span style="color: #D4D4D4">) AS writes,</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">xed.event_data.value(</span><span style="color: #DCDCAA">&#39;(//data[@name=&quot;row_count&quot;]/value)[1]&#39;</span><span style="color: #DCDCAA">,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;bigint&#39;</span><span style="color: #D4D4D4">) AS row_count,</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">TRY_CAST(xed.event_data.value(</span><span style="color: #DCDCAA">&#39;(//action[@name=&quot;sql_text&quot;]/value)[1]&#39;</span><span style="color: #DCDCAA">,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;varchar(max)&#39;</span><span style="color: #D4D4D4">) AS XML) AS sql_text,</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">TRY_CAST(xed.event_data.value(</span><span style="color: #DCDCAA">&#39;(//data[@name=&quot;batch_text&quot;]/value)[1]&#39;</span><span style="color: #DCDCAA">,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;varchar(max)&#39;</span><span style="color: #D4D4D4">) AS XML) AS batch_text,</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">xed.event_data.value(</span><span style="color: #DCDCAA">&#39;(//data[@name=&quot;result&quot;]/text)[1]&#39;</span><span style="color: #DCDCAA">,</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;varchar(100)&#39;</span><span style="color: #D4D4D4">) AS result</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #DCDCAA">FROM</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #6A9955">#Eventos A</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">CROSS</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">APPLY</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">A.event_data.nodes</span><span style="color: #D4D4D4">(</span><span style="color: #DCDCAA">&#39;//event&#39;</span><span style="color: #D4D4D4">) </span><span style="color: #CE9178">AS</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">xed</span><span style="color: #D4D4D4"> (event_data)</span></span>
<span class="line"><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #DCDCAA">END</span></span></code></pre></div>



<h2 class="wp-block-heading">4º Criar um Job para coletas frequentes.</h2>



<p>Para garantir que a coleta de queries lentas ocorra de forma contínua, podemos configurar um <strong>SQL Server Agent Job</strong> para executar a stored procedure periodicamente.</p>



<figure class="wp-block-image size-full"><img alt="" fetchpriority="high" decoding="async" width="699" height="651" src="https://furushima.com.br/wp-content/uploads/2025/03/Slow_query-1.gif" alt="" class="wp-image-2657"/></figure>



<p>Então podemos consultar nossa tabela Historico_Query_Lenta onde estarão nossos dados.</p>



<p></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Habilitando criptografia para um database MSSQL (TDE)</title>
		<link>https://furushima.com.br/blog/habilitando-criptografia-para-um-database-mssql-tde/</link>
		
		<dc:creator><![CDATA[Matsuo]]></dc:creator>
		<pubDate>Tue, 02 Apr 2024 18:31:36 +0000</pubDate>
				<category><![CDATA[Banco De Dados]]></category>
		<category><![CDATA[lgpd]]></category>
		<category><![CDATA[MSSQL]]></category>
		<category><![CDATA[TDE]]></category>
		<guid isPermaLink="false">https://dev.furushima.com.br/?p=2162</guid>

					<description><![CDATA[Recentemente tivemos uma demanda por conta de LGPD, onde tivemos que habilitar criptografia na camada do Database em uma instancia MSSQL, utilizaremos de início TDE (Transparent database Encryption) como o nome já diz, será transparente para a nossa aplicação. È possível ver que a base está com Encryption Enabled = False. Primeiro iremos criar a [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Recentemente tivemos uma demanda por conta de LGPD, onde tivemos que habilitar criptografia na camada do Database em uma instancia MSSQL, utilizaremos de início TDE (Transparent database Encryption) como o nome já diz, será transparente para a nossa aplicação.</p>



<p>È possível ver que a base está com Encryption Enabled = False.</p>



<figure class="wp-block-image size-full"><img alt="" decoding="async" width="592" height="156" src="https://dev.furushima.com.br/wp-content/uploads/2024/04/image.png" alt="" class="wp-image-2163" srcset="https://furushima.com.br/wp-content/uploads/2024/04/image.png 592w, https://furushima.com.br/wp-content/uploads/2024/04/image-300x79.png 300w" sizes="(max-width: 592px) 100vw, 592px" /></figure>



<p>Primeiro iremos criar a Master Key, esta chave terá um password, é muito importante salvá-lo.</p>



<figure class="wp-block-image size-full"><img alt="" decoding="async" width="588" height="227" src="https://dev.furushima.com.br/wp-content/uploads/2024/04/image-1.png" alt="" class="wp-image-2164" srcset="https://furushima.com.br/wp-content/uploads/2024/04/image-1.png 588w, https://furushima.com.br/wp-content/uploads/2024/04/image-1-300x116.png 300w" sizes="(max-width: 588px) 100vw, 588px" /></figure>



<p>E então criaremos o certificado que a Master Key irá utilizar.</p>



<figure class="wp-block-image size-full"><img alt="" loading="lazy" decoding="async" width="609" height="178" src="https://dev.furushima.com.br/wp-content/uploads/2024/04/image-2.png" alt="" class="wp-image-2165" srcset="https://furushima.com.br/wp-content/uploads/2024/04/image-2.png 609w, https://furushima.com.br/wp-content/uploads/2024/04/image-2-300x88.png 300w" sizes="(max-width: 609px) 100vw, 609px" /></figure>



<p></p>



<p>Validando a criação do certificado através da query.</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="SELECT name, pvt_key_encryption_type_desc, thumbprint FROM sys.certificates;" style="color:#e1e4e8;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki github-dark" style="background-color: #24292e" tabindex="0"><code><span class="line"><span style="color: #79B8FF">SELECT</span><span style="color: #E1E4E8"> name, pvt_key_encryption_type_desc, thumbprint </span><span style="color: #79B8FF">FROM</span><span style="color: #E1E4E8"> sys.certificates;</span></span></code></pre></div>



<figure class="wp-block-image size-full"><img alt="" loading="lazy" decoding="async" width="709" height="223" src="https://dev.furushima.com.br/wp-content/uploads/2024/04/image-3.png" alt="" class="wp-image-2166" srcset="https://furushima.com.br/wp-content/uploads/2024/04/image-3.png 709w, https://furushima.com.br/wp-content/uploads/2024/04/image-3-300x94.png 300w" sizes="(max-width: 709px) 100vw, 709px" /></figure>



<p>Agora deveremos conectar no database que iremos criptografar e criar a encryption key dentro deste database utilizando o certificado que criamos em nossa master.</p>



<p>Estamos utilizando o Algoritmo AES_256</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="USE <DATABASE&gt;;

CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256

ENCRYPTION BY SERVER CERTIFICATE TDE_CERT_GM;" style="color:#e1e4e8;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki github-dark" style="background-color: #24292e" tabindex="0"><code><span class="line"><span style="color: #79B8FF">USE</span><span style="color: #E1E4E8"> </span><span style="color: #F97583">&lt;</span><span style="color: #79B8FF">DATABASE</span><span style="color: #F97583">&gt;</span><span style="color: #E1E4E8">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #79B8FF">CREATE</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">DATABASE</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">ENCRYPTION</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">KEY</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">WITH</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">ALGORITHM</span><span style="color: #E1E4E8"> </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">AES_256</span></span>
<span class="line"></span>
<span class="line"><span style="color: #79B8FF">ENCRYPTION</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">BY</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">SERVER</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">CERTIFICATE</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">TDE_CERT_GM</span><span style="color: #E1E4E8">;</span></span></code></pre></div>



<p></p>



<figure class="wp-block-image size-full"><img alt="" loading="lazy" decoding="async" width="716" height="308" src="https://dev.furushima.com.br/wp-content/uploads/2024/04/image-5.png" alt="" class="wp-image-2168" srcset="https://furushima.com.br/wp-content/uploads/2024/04/image-5.png 716w, https://furushima.com.br/wp-content/uploads/2024/04/image-5-300x129.png 300w" sizes="(max-width: 716px) 100vw, 716px" /></figure>



<p>Podemos ver que recebemos um Aviso ao executar o comando, e está dizendo que devemos fazer um backup imediatamente deste certificado e sua chave privada, senão em caso de algum restore, não poderemos abrir mais este database sem estes itens!</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="Warning: The certificate used for encrypting the database encryption key has not been backed up. You should immediately back up the certificate and the private key associated with the certificate. If the certificate ever becomes unavailable or if you must restore or attach the database on another server, you must have backups of both the certificate and the private key or you will not be able to open the database." style="color:#e1e4e8;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki github-dark" style="background-color: #24292e" tabindex="0"><code><span class="line"><span style="color: #B392F0">Warning</span><span style="color: #E1E4E8">: The certificate used for encrypting the database encryption key has not been backed up. You should immediately back up the certificate and the private key associated </span><span style="color: #F97583">with</span><span style="color: #E1E4E8"> the certificate. If the certificate ever becomes unavailable or </span><span style="color: #F97583">if</span><span style="color: #E1E4E8"> you must restore or attach the database on another server, you must have backups </span><span style="color: #F97583">of</span><span style="color: #E1E4E8"> both the certificate and the private key or you will not be able to open the database.</span></span></code></pre></div>



<p>Vamos agora vamos habilitar a criptografia em nosso database.</p>



<figure class="wp-block-image size-full"><img alt="" loading="lazy" decoding="async" width="709" height="182" src="https://dev.furushima.com.br/wp-content/uploads/2024/04/image-6.png" alt="" class="wp-image-2169" srcset="https://furushima.com.br/wp-content/uploads/2024/04/image-6.png 709w, https://furushima.com.br/wp-content/uploads/2024/04/image-6-300x77.png 300w" sizes="(max-width: 709px) 100vw, 709px" /></figure>



<p></p>



<p>Esta etapa pode demorar um pouco, dependendo do tamanho do seu database, e pode ser avaliado o progresso através da query abaixo.</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="DECLARE @state tinyint;<br&gt;DECLARE @encyrption_progress<br&gt;TABLE(sample_time DATETIME, percent_complete DECIMAL(5,2))" style="color:#e1e4e8;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki github-dark" style="background-color: #24292e" tabindex="0"><code><span class="line"><span style="color: #79B8FF">DECLARE</span><span style="color: #E1E4E8"> @state tinyint;</span><span style="color: #F97583">&lt;</span><span style="color: #E1E4E8">br</span><span style="color: #F97583">&gt;</span><span style="color: #79B8FF">DECLARE</span><span style="color: #E1E4E8"> @encyrption_progress</span><span style="color: #F97583">&lt;</span><span style="color: #E1E4E8">br</span><span style="color: #F97583">&gt;</span><span style="color: #B392F0">TABLE</span><span style="color: #E1E4E8">(sample_time </span><span style="color: #79B8FF">DATETIME</span><span style="color: #E1E4E8">, percent_complete </span><span style="color: #B392F0">DECIMAL</span><span style="color: #E1E4E8">(</span><span style="color: #79B8FF">5</span><span style="color: #E1E4E8">,</span><span style="color: #79B8FF">2</span><span style="color: #E1E4E8">))</span></span></code></pre></div>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="SELECT @state = k.encryption_state<br&gt;FROM sys.dm_database_encryption_keys k<br&gt;INNER JOIN sys.databases d<br&gt;ON k.database_id = d.database_id<br&gt;WHERE d.name = ‘TestTDE’;" style="color:#e1e4e8;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki github-dark" style="background-color: #24292e" tabindex="0"><code><span class="line"><span style="color: #79B8FF">SELECT</span><span style="color: #E1E4E8"> @state </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> k.encryption_state</span><span style="color: #F97583">&lt;</span><span style="color: #E1E4E8">br</span><span style="color: #F97583">&gt;</span><span style="color: #79B8FF">FROM</span><span style="color: #E1E4E8"> sys.dm_database_encryption_keys k</span><span style="color: #F97583">&lt;</span><span style="color: #E1E4E8">br</span><span style="color: #F97583">&gt;</span><span style="color: #79B8FF">INNER</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">JOIN</span><span style="color: #E1E4E8"> sys.databases d</span><span style="color: #F97583">&lt;</span><span style="color: #E1E4E8">br</span><span style="color: #F97583">&gt;</span><span style="color: #79B8FF">ON</span><span style="color: #E1E4E8"> k.database_id </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> d.database_id</span><span style="color: #F97583">&lt;</span><span style="color: #E1E4E8">br</span><span style="color: #F97583">&gt;</span><span style="color: #79B8FF">WHERE</span><span style="color: #E1E4E8"> d.name </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> ‘TestTDE’;</span></span></code></pre></div>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="WHILE @state != 3<br&gt;BEGIN<br&gt;INSERT INTO @encyrption_progress(sample_time, percent_complete)<br&gt;SELECT GETDATE(), percent_complete<br&gt;FROM sys.dm_database_encryption_keys k<br&gt;INNER JOIN sys.databases d<br&gt;ON k.database_id = d.database_id<br&gt;WHERE d.name = ‘TestTDE’;" style="color:#e1e4e8;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki github-dark" style="background-color: #24292e" tabindex="0"><code><span class="line"><span style="color: #79B8FF">WHILE</span><span style="color: #E1E4E8"> @state </span><span style="color: #F97583">!=</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">3</span><span style="color: #F97583">&lt;</span><span style="color: #E1E4E8">br</span><span style="color: #F97583">&gt;</span><span style="color: #79B8FF">BEGIN</span><span style="color: #F97583">&lt;</span><span style="color: #E1E4E8">br</span><span style="color: #F97583">&gt;</span><span style="color: #79B8FF">INSERT</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">INTO</span><span style="color: #E1E4E8"> @</span><span style="color: #B392F0">encyrption_progress</span><span style="color: #E1E4E8">(sample_time, percent_complete)</span><span style="color: #F97583">&lt;</span><span style="color: #E1E4E8">br</span><span style="color: #F97583">&gt;</span><span style="color: #79B8FF">SELECT</span><span style="color: #E1E4E8"> </span><span style="color: #B392F0">GETDATE</span><span style="color: #E1E4E8">(), percent_complete</span><span style="color: #F97583">&lt;</span><span style="color: #E1E4E8">br</span><span style="color: #F97583">&gt;</span><span style="color: #79B8FF">FROM</span><span style="color: #E1E4E8"> sys.dm_database_encryption_keys k</span><span style="color: #F97583">&lt;</span><span style="color: #E1E4E8">br</span><span style="color: #F97583">&gt;</span><span style="color: #79B8FF">INNER</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">JOIN</span><span style="color: #E1E4E8"> sys.databases d</span><span style="color: #F97583">&lt;</span><span style="color: #E1E4E8">br</span><span style="color: #F97583">&gt;</span><span style="color: #79B8FF">ON</span><span style="color: #E1E4E8"> k.database_id </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> d.database_id</span><span style="color: #F97583">&lt;</span><span style="color: #E1E4E8">br</span><span style="color: #F97583">&gt;</span><span style="color: #79B8FF">WHERE</span><span style="color: #E1E4E8"> d.name </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> ‘TestTDE’;</span></span></code></pre></div>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="WAITFOR delay ’00:00:01′;SELECT @state = k.encryption_state&lt;br&gt;FROM sys.dm_database_encryption_keys k&lt;br&gt;INNER JOIN sys.databases d&lt;br&gt;ON k.database_id = d.database_id&lt;br&gt;WHERE d.name = ‘TestTDE’;&lt;br&gt;END" style="color:#e1e4e8;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki github-dark" style="background-color: #24292e" tabindex="0"><code><span class="line"><span style="color: #79B8FF">WAITFOR</span><span style="color: #E1E4E8"> delay ’</span><span style="color: #79B8FF">00</span><span style="color: #E1E4E8">:</span><span style="color: #79B8FF">00</span><span style="color: #E1E4E8">:</span><span style="color: #79B8FF">01</span><span style="color: #E1E4E8">′;</span><span style="color: #79B8FF">SELECT</span><span style="color: #E1E4E8"> @state </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> k.encryption_state</span><span style="color: #F97583">&lt;</span><span style="color: #E1E4E8">br</span><span style="color: #F97583">&gt;</span><span style="color: #79B8FF">FROM</span><span style="color: #E1E4E8"> sys.dm_database_encryption_keys k</span><span style="color: #F97583">&lt;</span><span style="color: #E1E4E8">br</span><span style="color: #F97583">&gt;</span><span style="color: #79B8FF">INNER</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">JOIN</span><span style="color: #E1E4E8"> sys.databases d</span><span style="color: #F97583">&lt;</span><span style="color: #E1E4E8">br</span><span style="color: #F97583">&gt;</span><span style="color: #79B8FF">ON</span><span style="color: #E1E4E8"> k.database_id </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> d.database_id</span><span style="color: #F97583">&lt;</span><span style="color: #E1E4E8">br</span><span style="color: #F97583">&gt;</span><span style="color: #79B8FF">WHERE</span><span style="color: #E1E4E8"> d.name </span><span style="color: #F97583">=</span><span style="color: #E1E4E8"> ‘TestTDE’;</span><span style="color: #F97583">&lt;</span><span style="color: #E1E4E8">br</span><span style="color: #F97583">&gt;</span><span style="color: #79B8FF">END</span></span></code></pre></div>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="SELECT * FROM @encyrption_progress;" style="color:#e1e4e8;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki github-dark" style="background-color: #24292e" tabindex="0"><code><span class="line"><span style="color: #79B8FF">SELECT</span><span style="color: #E1E4E8"> </span><span style="color: #F97583">*</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">FROM</span><span style="color: #E1E4E8"> @encyrption_progress;</span></span></code></pre></div>



<p></p>



<p>E então nosso database está criptografado!</p>



<figure class="wp-block-image size-full"><img alt="" loading="lazy" decoding="async" width="915" height="181" src="https://dev.furushima.com.br/wp-content/uploads/2024/04/image-7.png" alt="" class="wp-image-2170" srcset="https://furushima.com.br/wp-content/uploads/2024/04/image-7.png 915w, https://furushima.com.br/wp-content/uploads/2024/04/image-7-300x59.png 300w, https://furushima.com.br/wp-content/uploads/2024/04/image-7-768x152.png 768w" sizes="(max-width: 915px) 100vw, 915px" /></figure>



<p>Mas antes de finalizarmos, lembra do nosso Warning?</p>



<p>Precisamos Fazer um backup de nosso certificado e master Key! Não deixe isso para depois, pode ser um problemão!</p>



<p>Todos estes itens estão vinculados ao database Master, então devemos dar um use neste database, você deverá utilizar a mesma senha que fez para criação da Master Key.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>use master;</p>



<p>— Servico MK<br>BACKUP SERVICE MASTER KEY<br>TO FILE = ‘G:\TDE\svcMASTERKEY.bak’<br>ENCRYPTION BY PASSWORD = ‘XPTO’;</p>



<p>— MK<br>BACKUP MASTER KEY<br>TO FILE = ‘G:\TDE\MASTERKEY.key’<br>ENCRYPTION BY PASSWORD = ‘XPTO’;</p>



<p>— CERTIFICATE<br>BACKUP CERTIFICATE TDE_CERT_GM<br>TO FILE = ‘G:\TDE\TDE_CERT_GM.cert’<br>WITH PRIVATE KEY(<br>FILE = ‘G:\ TDE\TDE_CERT_GM.prvk’,<br>ENCRYPTION BY PASSWORD = ‘XPTO’<br>);</p>
</blockquote>



<figure class="wp-block-image size-full"><img alt="" loading="lazy" decoding="async" width="801" height="378" src="https://dev.furushima.com.br/wp-content/uploads/2024/04/image-8.png" alt="" class="wp-image-2171" srcset="https://furushima.com.br/wp-content/uploads/2024/04/image-8.png 801w, https://furushima.com.br/wp-content/uploads/2024/04/image-8-300x142.png 300w, https://furushima.com.br/wp-content/uploads/2024/04/image-8-768x362.png 768w" sizes="(max-width: 801px) 100vw, 801px" /></figure>



<p>E então finalizamos nossa implementação de TDE , para outros databases , você deverá apenas repetir o procedimento depois da criação do certificado.</p>



<p>Lembre-se de armazenar esses backups sempre em lugares seguro e suas respectivas senhas.</p>



<p>Até a Próxima!</p>



<p></p>



<p><strong><em>Criado por: Matsuo Furushima</em></strong></p>



<p></p>



<p></p>



<p></p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
