Autor do artigo: atualizado por Joao.Fonseca

(Não remova esse quadro) Descreva o passo a passo para o cliente seguindo os padrões de escrita de artigos, como: 1. Escreva em voz ativa. 2. Numere o passo a passo. 3. Atenção com imagens: utilize uma resolução apropriada ao local de inserção. 4. Escreva em tempo presente, na primeira pessoal e no imperativo (em passo a passo). Essas informações não se tonam parte do conteúdo em sua nova página, elas ficam ocultas e só aprecem para usuário logado e se o artigo/dica estiver em modo de edição!



Resolução


1- Acesse o PCC > Configure Local Egine, e registre os prints das configurações aplicadas no cliente:

  • Data integrity
  • Memory Usage
  • Performance Tuning
  • Todas DSNs utilizadas

É importante documentar todas as informações, pois o Pervasive será reinstalado e, com isso, as configurações precisarão ser reparametrizadas.


2- Em "Directories", copie o diretório especificado no campo "DBNames Configuration Location".

C:\ProgramData\Pervasive Software\PSQL

3-Acesse o diretório copiado C:\ProgramData\Pervasive Software\PSQL. 

4- Renomeie o arquivo "DBNames.CFG" para "DBNames.CFG-old".


5- No mesmo diretório execute o arquivo "RecreateSystemDBs.bat"

Reinstalação do Pervasive


6- Acesse "Painel de Controle\Todos os Itens do Painel de Controle\Programas e Recursos" e desinstale o Pervasive

7-Instale novamente o Pervasive e seu respectivo Patch

Pervasive Workgroup 11

I28 - Instalação do Pervasive 11.30 Workgroup

Pervasive Server 11

I362-Instalação Pervasive 11.30 Server


Pervasive Workgroup 13

I794-Instalação do Pervasive 13.30 Workgroup

Pervasive Server 13

I803-Instalação do Pervasive 13.30 Server



Criação de DSNs e Aplicação das configurações no Pervasive


8- No "REGEDIT" acesse

Para sistemas operacionais 32bits

Computador\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\ODBC\ODBC.INI

Para sistemas operacionais 64bits

Computador\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\ODBC\ODBC.INI

9- Realize o backup da chave odbc.ini, salvando a mesma no Desktop e em seguida exclua a chave

10- Efetue o procedimento do guia: I406 - Como recriar a base da DSN Prosoft no Servidor

11- Crie manualmente a DSN da Base Geral PROEMPXX

12- Efetue o processo do guia:  I408-Como realizar a manutenção das DSNs



Após o processo de manunteção de DSNs. Será necessário criar manualmente algumas DSNs no Pervasive, verifique conforme os Prints realizados e crie as DSNS.

Aplique novamente as configurações documentadas por Print no Pervasive.



(Não remova esse quadro)
Essas informações não se tonam parte do conteúdo em sua nova página, elas ficam ocultas e só aprecem para usuário logado e se o artigo/dica estiver em modo de edição!


<div id="text-end"></div>




<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-193974933-1"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag2(){dataLayer.push(arguments);}
  gtag2('js', new Date());

  gtag2('config', 'UA-193974933-1');


  function gtagevents (action,category) {
     console.log(category + ':' + action);
     gtag2('event',action,{event_category:category,event_label: document.title});
  };

</script>

<script src="https://player.vimeo.com/api/player.js"></script>
<script>
    (function(){
        // RASTREIO DE USO DO VÍDEO
        function gtagvideo(action){
           gtagevents(action,'Video')
        }

        var iframe = document.querySelector('iframe');
        var player = new Vimeo.Player(iframe);

        var seeking = false;
        var priorTime = 0;
        var currentTime = 0;
        var reportouFinalDoConteudo = false;

        // se pausar o play é acionado também.
        player.on('play', function(data) {
            if(data.seconds == 0){ 
              gtagvideo('video-iniciado');
            }
            priorTime = data.seconds;             
        });

        player.on('ended', function() {
            gtagvideo('video-finalizado');
        });

        //seeking e timeupdate são disparados juntos, logo o tempo dos 2 é atualizado também. Preciso garantir que a variavel starttime seja atualizada ordenadamente (sempre antes ou após o seeking).
        // pra isso preciso setar uma variavel no timeupdate e ler no seeking para garantir a ordem. Se ela estiver false será alterada na próxima iteração.
        player.on('seeking', function(data) {               
            seeking = true;
        });


        player.on('pause',function(data){
            gtagvideo('video-pausado');    
        });

        player.on('timeupdate', function(data) {
            if(seeking){
                if(currentTime < priorTime){
                    gtagvideo('video-voltando');    
                }
                if(currentTime > priorTime){
                    gtagvideo('video-avancando')
                }
                seeking = false;
            }
            priorTime = currentTime;
            currentTime = data.seconds;


           var finalDoConteudo = (data.duration - data.seconds) < 5;
           if(finalDoConteudo && !reportouFinalDoConteudo){
            gtagvideo('conteudo-finalizado')
            reportouFinalDoConteudo = true;
           }
        });

        player.on('fullscreenchange', function() {
            gtagvideo('video-fullscreen');
        });
    })();
</script>

<script>
 // RASTREIO DO USO DE AUDIO
 (function(){
    function gtagaudio(action){
           gtagevents(action,'Audio')
    }            

    var audio = document.querySelector("audio");

    var seeking = false;
    var priorTime = 0;
    var currentTime = 0;

    audio.addEventListener('play',function(){
        if(audio.currentTime == 0){
          gtagaudio('audio-iniciado');
        }
        priorTime = audio.currentTime;        
    });

    audio.addEventListener('ended',function(){
        gtagaudio('audio-finalizado');
    });

    audio.addEventListener('pause',function(){
        gtagaudio('audio-pausado');
    });

    audio.addEventListener('seeking', function(data) {               
        seeking = true;
    });

    audio.addEventListener('timeupdate', function(data) {               
        if(seeking){
                if(currentTime < priorTime){
                    gtagaudio('audio-voltando');    
                }
                if(currentTime > priorTime){
                    gtagaudio('audio-avancando')
                }
                seeking = false;
            }
            priorTime = currentTime;
            currentTime = audio.currentTime;
    });    
 })();
 </script>

<script>
    (function(){
        var terminou = false;
        //RASTREIO DE LEITURA ATÉ O FINAL DA PÁGINA
        document.addEventListener('scroll',() => {
            if(document.getElementById('text-end').getBoundingClientRect().top < window.innerHeight){
                if(!terminou){
                    terminou = true;
                    gtagevents('artigo-lido','Pagina')
                }
            }else{
                terminou = false;
            }
                
        });
    })();
 </script>