quinta-feira, 3 de janeiro de 2013

DLL em Delphi 7 pChar para Delphi 2009 PAnsiChar (Mas retorna um caractere)

Antes de você encontrar a parte técnica, é interessante saber o motivo da incompatibilidade entre o Pchar do D7 e D2009. É que o D2009 é Unicode (aceita caracteres especiais, no nosso caso utilizamos o russo e foi somente possível no D2009).


 Ao invés de utilizar pChar na DLL tem que utilizar PAnsiChar.  
è  (Manter a compatibilidade as alterações da DLL foram feitas e compiladas no Delphi 7.0)

A DLL – Declaração da função
Delphi 7.0
//function flGerarSenhaDB(hWnd: HWND; const lpPathPalavraChave, lpDataBase: pChar): pChar; stdcall;
Delphi 2009
function flGerarSenhaDB(hWnd: HWND; const lpPathPalavraChave, lpDataBase: pAnsiChar): pAnsiChar; stdcall; 


Declaração nos Programas que utilizam a DLL

Delphi 7.0
flGerarSenhaDB: function(hWnd: HWND; const lpPathPalavraChave : PChar; lpDataBase: PChar): PChar; stdcall;
Delphi 2009
flGerarSenhaDB: function(hWnd: HWND; const lpPathPalavraChave : PAnsiChar; lpDataBase: PAnsiChar): PAnsiChar; stdcall;

Na declaração a utilização do PAnsiChar, foi suficiente para funcionar. Mas na execução retornava somente 1 (um) caractere foi necessário a utilização da função AnsiString. Bingo funcionou...

Chamada para executar função da DLL
Delphi 7.0
flGerarSenhaDB( Application.Handle, PChar(sPathPalavra), PChar(sNmDataBase) );
Delphi 2009
flGerarSenhaDB(Application.Handle, PAnsiChar(AnsiString(sPathPalavra)), PAnsiChar(AnsiString(sNmDataBase)) );

quinta-feira, 27 de dezembro de 2012

Como acessar o Firebird pelo Visual Studio


Para o projeto funcionar, basta acertar a localização do banco de dados no Web.Config

Pode baixar a versão em :


ou



Baseado no treinamento que fizemos, segue um exemplo que acessa, inclui e atualiza SQL Server e Firebird no mesmo projeto. No projeto foi utilizado classes modelo DAL (DALFB.cs).

Para acessar o Firebird, utilizei o NetProvider, que esta anexo, segue o link : http://www.firebirdsql.org/en/net-provider/ (Utilizei a ultima versão 2.7.7)


è No projeto já tem a referencia...

A diferença que tem nesse projeto para acessar o Firebird é que deve ser feito um “Add Reference...” na DLL que tem as funções necessárias para acesso e gravação no FireBird.

Neste projeto já esta adicionado a referencia.

Oracle - Como criar Script para eliminar sessões


Essa select tem o objetivo de avaliar se existem sessões presas em um determinado usuário, retorna o Script pronto para eliminar as mesmas.

Basta executar e melhorar a performance de seu BD Oracle...

SELECT s.inst_id,
       s.sid,
       s.serial#,
       p.spid,
       s.username,
       s.program,
       s.STATUS,
       s.OSUSER,
       'ALTER SYSTEM KILL SESSION '''||s.SID||','||s.SERIAL#||''';'
FROM   gv$session s
       JOIN gv$process p ON p.addr = s.paddr AND p.inst_id = s.inst_id
where  s.username = 'USER_NAME';

quarta-feira, 1 de agosto de 2012

Consultar Tamanho de tabelas em Oracle


select --'truncate table ' || segment_name || ';',
       segment_name table_name, sum(bytes) / (1024 * 1024) table_size_meg
  from user_extents
 where segment_type = 'TABLE'
--   and segment_name = 'MyTable1'
 group BY segment_name
 HAVING sum(bytes) / (1024 * 1024) > 5 -- Mega

Consultar tamanho de Tablespace em Oracle



select s.tablespace_name "Tablespace",
       to_char(sum(s.bytes), 'fm999g999g999g999g990') "Space (bytes)"
from dba_free_space s
group by s.tablespace_name
order by s.tablespace_name

Conectar no Firebird fora da porta padrão (3050)


Origem:

Servidor for windows tente isso:
172.17.2.10/3051:c:dbmyDb.fdb
myserver/3051:c:dbmyDb.fdb

linux, então:
172.17.2.10/3051:/usr/local/db/myDb.fdb
myserver/3051:/usr/local/db/myDb.fdb


Como fica a configuração do Arquivo .INI

Exemplo acessando Cliente

Firebird 1.5
[Conexao]
#Database=AFL95:E:\CLIENTES\SISADMLH.FDB
Database=AFL95/3051:E:\CLIENTES\SISADMLH.FDB

Firebird 2.1
[Conexao]
#Database=AFL95:E:\CLIENTES\LUTEPEL\SISADMLH.FDB
Database=AFL95/3050:E:\CLIENTES\SISADMLH.FDB

Instalação de 2 Versões do Firebird na mesma Máquina



É provável que em algum servidor possa ter instalados mais de uma versão do firebird.  Neste caso faz-se necessária a instalação das versões de modo especial.
Siga as instruções conforme abaixo:

1) Desinstalando as versões existentes
Desinstale todos os firebirds instalados na máquina através doPainel de Controle – Adicionar ou remover Programas. E delete a pasta “C:\Arquivos de Programas\Firebird”.

2) Instalando o Firebird 1.5
Talvez seja necessário “parar” o serviço, antes de desinstalar o instalador poderá ser baixado através do  site http://dinizsoft.webnode.com/products/firebird-1-5-sgbd-firebird/
Instale o firebird 1.5 como APLICAÇÃO.




3) Configurando o Firebird 1.5
Encerre o FBGUARD clicando no ícone: http://ftp.dinizsoft.com.br/images/orienta/2fire/02icone.jpg que estará ao lado do relógio. Para encerrá-lo clique com o botão direito sobre e escolha a opção SHUTDOWN.
Abra o arquivo “firebird.conf” que estará em “C:\Arquivos de Programas\Firebird\Firebird_1_5”, com o bloco de notas
No arquivo, altere a linha “#RemoteServicePort =3050”para “RemoteServicePort =3051”(Obs. Lembre-se de retirar o “#” no começo da linha) e salve as alterações.



4) Instalando uma versão superior
Instale a versão superior a do Firebird 1.5 que já esteja instalado (Ex.: 2.1, 2.5).
No momento da instalação, será apresentada uma mensagem que já existe outra versão do Firebird instalada na maquina, clique em NÃO:



Durante o processo de configuração da instalação altere o local da instalação. Perceba que o instalador virá pré-configurado para instalar na pasta “C:\Arquivos de Programas\Firebird\Firebird_2_5”, mude para “C:\Arquivos de Programas\ Firebird_2_5”. Esta etapa é muito importante.



Obs.: Note que foi apagada a denominação da pasta Firebird que fica dentro da pasta Arquivos de programas, para que as duas versões não fiquem instaladas no mesmo diretório.
Abra o PROMPT do DOS (Iniciar/Executar/cmd) ou prompt do DOS e acesse a pasta: “C:\Arquivos de Programas\Firebird_2_1\Bin” (cd C:\Arquivos de programas\Firebird\Firebird_2_1\bin) (cd .. para voltar) e execute os seguintes comandos:
instsvc i –s –g
Se estiver certo, será mostrada a seguinte mensagem:
C:\Arquivos de programas\Firebird_2_5\bin>instsvc i -s -g
Service “Firebird Guardian – DefaultInstance” successfully created.
Service “Firebird Server – DefaultInstance” successfully created.

Se ocorrer o erro ao executar o instsvc i -s -g -name "Firebird 2.1"
   è Error occurred during "OpenSCManager".
   è Atribuir o programa “instsvc.exe” para executar como administrador

Mas atenção, continue o processo se esta mensagem não aparecer.
Em seguida execute o próximo comando:
instsvc sta
Se estiver certo, será mostrada a seguinte mensagem:
C:\Arquivos de programas\Firebird_2_5\bin>instsvc sta
Service “Firebird Guardian – DefaultInstance” successfully started.
Após fazer os procedimentos, reinicie a máquina e os 2 Firebirds estarão rodando simultaneamente.