Geral

User

System

Desenvolvimento #6193

Atualizado por TARCISIO DA ROCHA há 5 dias

<p data-path-to-node="8"><b data-path-to-node="6"><b data-index-in-node="0" data-path-to-node="8">🎯 data-path-to-node="6">🎯 Objetivo:</b> Documentar a arquitetura e os procedimentos t&eacute;cnicos executados para a homologa&ccedil;&atilde;o do ambiente de desenvolvimento do sistema legado Hemovida em uma esta&ccedil;&atilde;o de trabalho moderna com Windows 11. O escopo abrange a supera&ccedil;&atilde;o de incompatibilidades de SO, sistema operacional, upgrade de licenciamento do banco de dados, otimiza&ccedil;&atilde;o de I/O em disco (SSD) e, de forma cr&iacute;tica, <b data-index-in-node="337" data-path-to-node="8">a resolu&ccedil;&atilde;o dos conflitos de rede e interdepend&ecirc;ncia simult&acirc;nea entre SQL Server e Paradox no configura&ccedil;&atilde;o cir&uacute;rgica do middleware de comunica&ccedil;&atilde;o BDE de 32 bits.</b></p> bits.</p> 

 <p data-path-to-node="9"><b data-path-to-node="7"><b data-index-in-node="0" data-path-to-node="9">🖥️ data-path-to-node="7">🖥️ Arquitetura e Escopo do Ambiente:</b></p> 

 <ul data-path-to-node="10"> data-path-to-node="8"> 
	 <li> 
	 <p data-path-to-node="10,0,0"><b data-path-to-node="8,0,0"><b data-index-in-node="0" data-path-to-node="10,0,0">Sistema data-path-to-node="8,0,0">Sistema Operacional:</b> Windows 11 Pro / Enterprise (x64).</p> 
	 </li> 
	 <li> 
	 <p data-path-to-node="10,1,0"><b data-path-to-node="8,1,0"><b data-index-in-node="0" data-path-to-node="10,1,0">Motor data-path-to-node="8,1,0">Motor de Banco de Dados:</b> Microsoft SQL Server 2008 R2 (Inst&acirc;ncia: <code data-index-in-node="66" data-path-to-node="10,1,0">MSSQLSERVER</code>).</p> data-path-to-node="8,1,0">MSSQLSERVER</code>).</p> 
	 </li> 
	 <li> 
	 <p data-path-to-node="10,2,0"><b data-path-to-node="8,2,0"><b data-index-in-node="0" data-path-to-node="10,2,0">Middleware:</b> data-path-to-node="8,2,0">Middleware:</b> BDE Administrator (32-bit).</p> 
	 </li> 
	 <li> 
	 <p data-path-to-node="10,3,0"><b data-path-to-node="8,3,0"><b data-index-in-node="0" data-path-to-node="10,3,0">Volume data-path-to-node="8,3,0">Volume da Base:</b> ~72.5 GB (Banco <code data-index-in-node="32" data-path-to-node="10,3,0">hemovida</code>).</p> data-path-to-node="8,3,0">hemovida</code>).</p> 
	 </li> 
 </ul> 

 <h3 data-path-to-node="12"><b data-path-to-node="10"><b data-index-in-node="0" data-path-to-node="12">🧠 data-path-to-node="10">🧠 Justificativas T&eacute;cnicas e Pr&eacute;-requisitos:</b></h3> 

 <p data-path-to-node="13"><b data-path-to-node="11"><b data-index-in-node="0" data-path-to-node="13">1. Interdepend&ecirc;ncia Cr&iacute;tica (Paradox vs. SQL Server no BDE):</b> O execut&aacute;vel do Hemovida exige comunica&ccedil;&atilde;o <b data-index-in-node="104" data-path-to-node="13">simult&acirc;nea</b> com o SQL Server (dados centrais) e com o banco local Paradox (tabelas de apoio). Qualquer gargalo de rede ou bloqueio de arquivo de sess&atilde;o no Paradox derruba a aplica&ccedil;&atilde;o inteira.</p> 

 <ul data-path-to-node="14"> 
	 <li> 
	 <p data-path-to-node="14,0,0"><b data-index-in-node="0" data-path-to-node="14,0,0">Solu&ccedil;&atilde;o:</b> Foi necess&aacute;rio isolar a comunica&ccedil;&atilde;o do SQL Server para usar mem&oacute;ria compartilhada nativa (bypass de rede externa) e configurar permiss&otilde;es estritas para o arquivo de trava do Paradox (<code data-index-in-node="192" data-path-to-node="14,0,0">PDOXUSRS.NET</code>) no diret&oacute;rio raiz do sistema, garantindo a coexist&ecirc;ncia pac&iacute;fica de ambos no BDE.</p> 
	 </li> 
 </ul> 

 <p data-path-to-node="15"><b data-index-in-node="0" data-path-to-node="15">2. data-path-to-node="11">1. Estrat&eacute;gia de Storage (SSD vs. HDD Convencional):</b> Alocar Devido ao alto volume da base de dados (72,5 GB), alocar os arquivos <code data-index-in-node="69" data-path-to-node="15">.mdf</code> data-index-in-node="122" data-path-to-node="11">.mdf</code> (dados) e <code data-index-in-node="76" data-path-to-node="15">.ldf</code> de 72,5 GB data-index-in-node="137" data-path-to-node="11">.ldf</code> (logs) em um HDD disco r&iacute;gido mec&acirc;nico (HDD) ou particionar junto com o SO sistema operacional (C:) causa causaria severos gargalos de IOPS.</p> IOPS (opera&ccedil;&otilde;es de entrada/sa&iacute;da por segundo), resultando em travamentos (&quot;freezes&quot;) do Windows durante consultas pesadas ou restaura&ccedil;&otilde;es.</p> 

 <ul data-path-to-node="16"> data-path-to-node="12"> 
	 <li> 
	 <p data-path-to-node="16,0,0"><b data-path-to-node="12,0,0"><b data-index-in-node="0" data-path-to-node="16,0,0">Solu&ccedil;&atilde;o:</b> Segrega&ccedil;&atilde;o de I/O. data-path-to-node="12,0,0">Solu&ccedil;&atilde;o:</b> O ambiente foi segregado. O drive <code data-index-in-node="36" data-path-to-node="16,0,0">D:</code> (SSD) data-index-in-node="43" data-path-to-node="12,0,0">C:</code> responde pelo SO, enquanto o drive <code data-index-in-node="81" data-path-to-node="12,0,0">D:</code> (idealmente um SSD SATA/NVMe de alta performance) foi formatado com permiss&otilde;es NTFS exclusivas (<code data-index-in-node="91" data-path-to-node="16,0,0">icacls</code>) data-index-in-node="180" data-path-to-node="12,0,0">icacls</code>) para hospedar unicamente o SQL Server (<code data-index-in-node="138" data-path-to-node="16,0,0">D:\SQLData</code>, data-index-in-node="227" data-path-to-node="12,0,0">D:\SQLData</code>, <code data-index-in-node="150" data-path-to-node="16,0,0">D:\SQLLogs</code>, data-index-in-node="239" data-path-to-node="12,0,0">D:\SQLLogs</code>, <code data-index-in-node="162" data-path-to-node="16,0,0">D:\SQLBackup</code>).</p> data-index-in-node="251" data-path-to-node="12,0,0">D:\SQLBackup</code>).</p> 
	 </li> 
 </ul> 

 <p data-path-to-node="17"><b data-path-to-node="13"><b data-index-in-node="0" data-path-to-node="17">3. data-path-to-node="13">2. Depend&ecirc;ncias de Framework:</b></p> Framework (.NET 3.5 e PowerShell 2.0):</b> O SQL Server 2008 R2 e o BDE s&atilde;o tecnologias legadas que dependem de bibliotecas antigas n&atilde;o ativas por padr&atilde;o no Windows 11.</p> 

 <ul data-path-to-node="18"> data-path-to-node="14"> 
	 <li> 
	 <p data-path-to-node="18,0,0"><b data-path-to-node="14,0,0"><b data-index-in-node="0" data-path-to-node="18,0,0">Solu&ccedil;&atilde;o:</b> data-path-to-node="14,0,0">Solu&ccedil;&atilde;o:</b> Habilita&ccedil;&atilde;o pr&eacute;via do <b data-index-in-node="31" data-path-to-node="18,0,0">.NET data-path-to-node="14,0,0">.NET Framework 3.5</b> (via Recursos do Windows) e inje&ccedil;&atilde;o de chaves de registro (Bypass) for&ccedil;ando o a engine do PowerShell a reportar a vers&atilde;o 2.0, permitindo que o instalador do SQL 2008 valide os pr&eacute;-requisitos no Windows 11.</p> sem falhar.</p> 
	 </li> 
 </ul> 

 <h3 data-path-to-node="20"><b data-path-to-node="16"><b data-index-in-node="0" data-path-to-node="20">🚀 data-path-to-node="16">🚀 Procedimentos Executados (Entreg&aacute;veis):</b></h3> 

 <p data-path-to-node="21"><b data-path-to-node="17"><b data-index-in-node="0" data-path-to-node="21">Fase data-path-to-node="17">Fase 1: Bypass de SO e Instala&ccedil;&atilde;o do SQL Server</b></p> 

 <ol data-path-to-node="22" data-path-to-node="18" start="1"> 
	 <li> 
	 <p data-path-to-node="22,0,0"><b data-path-to-node="18,0,0"><b data-index-in-node="0" data-path-to-node="22,0,0">Vacina data-path-to-node="18,0,0">Vacina de Registro:</b> Inje&ccedil;&atilde;o da chave Executado script PowerShell injetando as chaves <code data-index-in-node="37" data-path-to-node="22,0,0">PowerShellVersion data-index-in-node="68" data-path-to-node="18,0,0">PowerShellVersion = 2.0</code> no Windows 11.</p> em <code data-index-in-node="95" data-path-to-node="18,0,0">HKLM:\SOFTWARE\Microsoft</code> e <code data-index-in-node="122" data-path-to-node="18,0,0">WOW6432Node</code>, contornando o bloqueio de valida&ccedil;&atilde;o do instalador.</p> 
	 </li> 
	 <li> 
	 <p data-path-to-node="22,1,0"><b data-path-to-node="18,1,0"><b data-index-in-node="0" data-path-to-node="22,1,0">Instala&ccedil;&atilde;o Express e Edition Upgrade:</b> Instala&ccedil;&atilde;o data-path-to-node="18,1,0">Instala&ccedil;&atilde;o Core (Express):</b> Realizada a instala&ccedil;&atilde;o silenciosa do motor SQL Server Express, definindo autentica&ccedil;&atilde;o em Modo Misto (usu&aacute;rio <code data-index-in-node="83" data-path-to-node="22,1,0">sa</code>) seguida data-index-in-node="136" data-path-to-node="18,1,0">sa</code>).</p> 
	 </li> 
	 <li> 
	 <p data-path-to-node="18,2,0"><b data-index-in-node="0" data-path-to-node="18,2,0">Edition Upgrade (Bypass de Limite):</b> Como a vers&atilde;o Express possui limite f&iacute;sico de 10 GB (incompat&iacute;vel com os 72,5 GB do Hemovida), a ISO da m&iacute;dia comercial foi montada e o comando de <i data-index-in-node="98" data-path-to-node="22,1,0">Edition data-index-in-node="183" data-path-to-node="18,2,0">Edition Upgrade</i> (ISO comercial montada) foi acionado para elevar a inst&acirc;ncia &agrave; vers&atilde;o <b data-index-in-node="152" data-path-to-node="22,1,0">Standard data-index-in-node="245" data-path-to-node="18,2,0">Standard Edition</b>, destravando o limite f&iacute;sico de 10 GB.</p> armazenamento.</p> 
	 </li> 
 </ol> 

 <p data-path-to-node="23"><b data-path-to-node="19"><b data-index-in-node="0" data-path-to-node="23">Fase data-path-to-node="19">Fase 2: Estrutura&ccedil;&atilde;o de Disco Disco, Permiss&otilde;es e Restaura&ccedil;&atilde;o Redirecionada</b></p> Restaura&ccedil;&atilde;o</b></p> 

 <ol data-path-to-node="24" data-path-to-node="20" start="1"> 
	 <li> 
	 <p data-path-to-node="24,0,0"><b data-path-to-node="20,0,0"><b data-index-in-node="0" data-path-to-node="24,0,0">Permiss&otilde;es data-path-to-node="20,0,0">Permiss&otilde;es NTFS:</b> Aplica&ccedil;&atilde;o Cria&ccedil;&atilde;o da estrutura no disco <code data-index-in-node="47" data-path-to-node="20,0,0">D:</code> com aplica&ccedil;&atilde;o de controle total via <code data-index-in-node="49" data-path-to-node="24,0,0">icacls</code> no disco <code data-index-in-node="65" data-path-to-node="24,0,0">D:</code> data-index-in-node="86" data-path-to-node="20,0,0">icacls</code> para as contas <code data-index-in-node="83" data-path-to-node="24,0,0">SYSTEM</code> data-index-in-node="108" data-path-to-node="20,0,0">SYSTEM</code> e <code data-index-in-node="92" data-path-to-node="24,0,0">Administrators</code>.</p> data-index-in-node="117" data-path-to-node="20,0,0">Administrators</code>, garantindo que o servi&ccedil;o do SQL consiga alocar grandes blocos no SSD sem erro de Acesso Negado.</p> 
	 </li> 
	 <li> 
	 <p data-path-to-node="24,1,0"><b data-path-to-node="20,1,0"><b data-index-in-node="0" data-path-to-node="24,1,0">Restore (WITH MOVE):</b> Altera&ccedil;&atilde;o data-path-to-node="20,1,0">Altera&ccedil;&atilde;o de Registro:</b> Caminhos <code data-index-in-node="32" data-path-to-node="20,1,0">DefaultData</code> e <code data-index-in-node="46" data-path-to-node="20,1,0">DefaultLog</code> alterados via <code data-index-in-node="71" data-path-to-node="20,1,0">xp_instance_regwrite</code> para apontarem nativamente para o disco <code data-index-in-node="132" data-path-to-node="20,1,0">D:</code>.</p> 
	 </li> 
	 <li> 
	 <p data-path-to-node="20,2,0"><b data-index-in-node="0" data-path-to-node="20,2,0">Restore Redirecionado:</b> Executado o <code data-index-in-node="35" data-path-to-node="24,1,0">xp_instance_regwrite</code> dos caminhos padr&atilde;o e restaura&ccedil;&atilde;o data-path-to-node="20,2,0">RESTORE DATABASE</code> do arquivo <code data-index-in-node="93" data-path-to-node="24,1,0">.bak</code> gravando os data-index-in-node="63" data-path-to-node="20,2,0">.bak</code> utilizando a cl&aacute;usula <code data-index-in-node="90" data-path-to-node="20,2,0">WITH MOVE</code>, for&ccedil;ando a grava&ccedil;&atilde;o f&iacute;sica dos 72,5 GB diretamente nas pastas estruturadas no SSD.</p> 
	 </li> 
 </ol> 

 <p data-path-to-node="25"><b data-path-to-node="21"><b data-index-in-node="0" data-path-to-node="25">Fase data-path-to-node="21">Fase 3: Limpeza Configura&ccedil;&otilde;es de Rede Legada (Resolu&ccedil;&atilde;o do Erro 25)</b> <i data-index-in-node="54" data-path-to-node="25">O BDE estava falhando ao tentar usar protocolos TCP/IP for&ccedil;ados por configura&ccedil;&otilde;es antigas do Windows para se comunicar com o SQL.</i></p> e Firewall</b></p> 

 <ol data-path-to-node="26" data-path-to-node="22" start="1"> 
	 <li> 
	 <p data-path-to-node="26,0,0">Executado o utilit&aacute;rio data-path-to-node="22,0,0"><b data-index-in-node="0" data-path-to-node="22,0,0">SQL Browser:</b> Ativado e iniciado para permitir a resolu&ccedil;&atilde;o de rede 32-bit via atalho <code data-index-in-node="49" data-path-to-node="26,0,0">Win + R</code>: <code data-index-in-node="58" data-path-to-node="26,0,0">C:\Windows\SysWOW64\cliconfg.exe</code>.</p> inst&acirc;ncias na rede.</p> 
	 </li> 
	 <li> 
	 <p data-path-to-node="26,1,0">Na aba data-path-to-node="22,1,0"><b data-index-in-node="0" data-path-to-node="22,1,0">Libera&ccedil;&atilde;o de Tr&aacute;fego:</b> Criadas regras Inbound no Firewall do Windows 11 para as portas <b data-index-in-node="7" data-path-to-node="26,1,0">Alias</b>, foi realizada a data-index-in-node="86" data-path-to-node="22,1,0">TCP 1433</b> (SQL Engine) e <b data-index-in-node="30" data-path-to-node="26,1,0">remo&ccedil;&atilde;o completa</b> data-index-in-node="110" data-path-to-node="22,1,0">UDP 1434</b> (SQL Browser).</p> 
	 </li> 
	 <li> 
	 <p data-path-to-node="22,2,0"><b data-index-in-node="0" data-path-to-node="22,2,0">Limpeza de qualquer apontamento manual (ex: Aliases TCP/IP:</b> Executado o utilit&aacute;rio <code data-index-in-node="83" data-path-to-node="26,1,0">DEV-ROCHA</code>). Essa limpeza foi essencial data-index-in-node="50" data-path-to-node="22,2,0">cliconfg.exe</code> (SysWOW64) para for&ccedil;ar o BDE a ignorar regras conflitantes remover aliases manuais antigos de TCP/IP e passar rede, for&ccedil;ando a aplica&ccedil;&atilde;o a utilizar o atalho nativo atalhos de mem&oacute;ria compartilhada do Windows 11.</p> local para evitar <code data-index-in-node="203" data-path-to-node="22,2,0">Timeouts</code>.</p> 
	 </li> 
 </ol> 

 <p data-path-to-node="27"><b data-path-to-node="23"><b data-index-in-node="0" data-path-to-node="27">Fase data-path-to-node="23">Fase 4: Middleware BDE (Harmonizando SQL e Paradox)</b></p> Compatibilidade Legada (BDE)</b></p> 

 <ol data-path-to-node="28" data-path-to-node="24" start="1"> 
	 <li> 
	 <p data-path-to-node="28,0,0"><b data-path-to-node="24,0,0"><b data-index-in-node="0" data-path-to-node="28,0,0">Vendor data-path-to-node="24,0,0">Vendor Init Bypass (Erro (BDE Error 15879):</b> Limpeza mandat&oacute;ria do campo <code data-index-in-node="61" data-path-to-node="28,0,0">VENDOR data-index-in-node="66" data-path-to-node="24,0,0">VENDOR INIT</code> na configura&ccedil;&atilde;o do driver MSSQL nativo no BDE, BDE Administrator, evitando crash de aloca&ccedil;&atilde;o de DLLs de rede no Windows 11.</p> 
	 </li> 
	 <li> 
	 <p data-path-to-node="28,1,0"><b data-path-to-node="24,1,0"><b data-index-in-node="0" data-path-to-node="28,1,0">Alias data-path-to-node="24,1,0">Alias SQL (<code data-index-in-node="11" data-path-to-node="28,1,0">hemoloc</code>):</b> (hemoloc):</b> Configurado o <i data-index-in-node="35" data-path-to-node="28,1,0">Server Name</i> Server Name exclusivamente com um ponto final (<code data-index-in-node="82" data-path-to-node="28,1,0">.</code>). Juntamente data-path-to-node="24,1,0">.</code>), garantindo o bypass da rede TCP/IP e usando comunica&ccedil;&atilde;o direta com a limpeza do <code data-index-in-node="114" data-path-to-node="28,1,0">cliconfg.exe</code>, isso garantiu a comunica&ccedil;&atilde;o interna perfeita.</p> inst&acirc;ncia local.</p> 
	 </li> 
	 <li> 
	 <p data-path-to-node="28,2,0"><b data-path-to-node="24,2,0"><b data-index-in-node="0" data-path-to-node="28,2,0">Alias data-path-to-node="24,2,0">Alias Paradox (<code data-index-in-node="15" data-path-to-node="28,2,0">sht</code>):</b> (sht):</b> Parametrizado o <code data-index-in-node="37" data-path-to-node="28,2,0">NET data-path-to-node="24,2,0">NET DIR</code> estritamente para a raiz do disco principal (<code data-index-in-node="90" data-path-to-node="28,2,0">C:\</code>). Essa altera&ccedil;&atilde;o garantiu data-index-in-node="67" data-path-to-node="24,2,0">C:\</code>), assegurando a cria&ccedil;&atilde;o correta e as permiss&otilde;es de leitura/escrita grava&ccedil;&atilde;o do arquivo de trava <code data-index-in-node="193" data-path-to-node="28,2,0">PDOXUSRS.NET</code>, fundamental para que as tabelas locais funcionem junto com as do SQL.</p> de sess&atilde;o (<code data-index-in-node="135" data-path-to-node="24,2,0">PDOXUSRS.NET</code>).</p> 
	 </li> 
 </ol> 

 <p data-path-to-node="29"><b data-path-to-node="25"><b data-index-in-node="0" data-path-to-node="29">✅ data-path-to-node="25">✅ Status Atual:</b> As travas de interdepend&ecirc;ncia foram superadas. O ambiente de desenvolvimento local foi provisionado com sucesso. O execut&aacute;vel <code data-index-in-node="142" data-path-to-node="29">Hemovida.exe</code> data-index-in-node="95" data-path-to-node="25">Hemovida.exe</code> consegue operar o banco Paradox e a base SQL simultaneamente, se comunicar de forma est&aacute;vel com as bases SQL e Paradox simultaneamente, pronto para atualiza&ccedil;&otilde;es.</p> receber atualiza&ccedil;&otilde;es de c&oacute;digo.</p> 

Voltar