INFO: Utilizar funções de biblioteca de base de dados de uma DLL do Windows

Traduções de Artigos Traduções de Artigos
Artigo: 105346 - Ver produtos para os quais este artigo se aplica.
Este artigo foi arquivado. Este artigo é oferecido "tal como está" e deixará de ser actualizado.
Expandir tudo | Reduzir tudo

Sumário

Escrever uma biblioteca de utilizador ligação dinâmica (DLL) para o Windows para funções de acesso a biblioteca de base de dados requer considerações especiais. Uma consideração específica de biblioteca de base de dados é que não é possível partilhar uma DLL DBPROCESS ligações ou mensagem de erro e processadores entre aplicações. Isto acontece porque uma DLL pode ser chamada a partir de muitas diferente aplicações em execução em simultâneo.

Mais Informação

Uma DLL executado no contexto do programa que é chamado. Isto é importante porque a biblioteca de base de dados controla separadamente dados para cada aplicação activa. Estes dados por processo incluem DBPROCESS ligações e apontadores para os processadores de erro e a mensagem. Biblioteca de base de dados faz isto por registar o identificador de tarefas do Windows a aplicação de chamada quando dbinit() denomina-se e utiliza para identificar todos os os dados de biblioteca de base de dados associados essa aplicação. A função dbwinexit() anula o "registo" a aplicação e de-allocates os dados associados no processo.

Além disso, biblioteca de base de dados para o Windows valida cada ligação DBPROCESS antes de o utilizar, utilizando a alça de tarefas Windows da aplicação chamada.

Se tentar partilhar um DBPROCESS entre várias aplicações, ocorrerá o seguinte:
  1. Suponha que aplicação APPONE chamadas a DLL. Efectue uma dbinit(), utilize dbopen() para obter uma ligação DBPROCESS e iniciar a aceder ao SQL Server.
  2. Agora suponha que aplicação APPTWO chamadas a DLL e DLL tenta utilizar o mesmo DBPROCESS (de uma DLL tem durante a execução em APPONE) numa chamada para dbcmd() ou qualquer outra função de biblioteca de base de dados.
  3. Uma vez que a DLL estiver em execução no contexto do APPTWO, biblioteca de base de dados irá procurar o registo de APPTWO e não a localizar devolverá falhas.

Existem várias abordagens para tratamento de chamadas de biblioteca de base de dados de uma DLL. Alguns dos mais comuns são descritas abaixo:

Uma forma é que cada aplicação respectiva dbinit() e dbopen() registem processadores próprios mensagem de erro e e passar o ponteiro DBPROCESS como um parâmetro para as funções DLL. Quando a aplicação estiver concluída, chamará dbwinexit().

Segunda opção consiste em ter todos a DLL funções chamada dbinit(), registar os processadores de mensagens de erro e, chamada dbopen(), utilize DBPROCESS, em seguida, chamada dbwinexit().

Outra opção é para a DLL fornecer uma função dll_init() e dll_exit(), denominados por cada aplicação que pretende utilizar a DLL. A função dll_init() seria chamar dbinit() e dbopen(), instalar os processadores de mensagens de erro e e devolver o dbproc para chamar a rotina. Em seguida, a função dll_exit() deverá chamar dbwinexit(). Aplicação de chamada deverá passar novamente o dbproc cada chamada para a DLL.

Propriedades

Artigo: 105346 - Última revisão: 9 de fevereiro de 2014 - Revisão: 3.1
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 4.21a Standard Edition
  • Microsoft SQL Server 6.5 Standard Edition
Palavras-chave: 
kbnosurvey kbarchive kbmt kbinfo kbprogramming KB105346 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 105346

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com