Artigo: 248241 - Última revisão: sexta-feira, 28 de Dezembro de 2007 - Revisão: 3.1

INF: Activar Clientes DMO de SQL Sem Instalar os Utilitários do Lado do Cliente

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Reduzir tudo

Sumário

Este artigo documenta os passos necessários para activar a funcionalidade SQL-DMO (SQL Server Distributed Management Objects) do lado do cliente sem ter de instalar o SQL Server Client Utilities.

Mais Informação

Cenário Típico

Escreve uma aplicação que tira partido do modelo de objectos SQL-DMO no SQL Server. A aplicação funciona correctamente no servidor e funciona correctamente nos clientes quando o SQL Server Client Utilities está instalado. No entanto, a aplicação não funciona autonomamente. Adicionalmente, poderá ver vários erros relacionados com isto. Os erros mais comuns são:
O ActiveX não consegue criar o objecto
O campo não está vinculado correctamente
Não é possível localizar o ponto de entrada
NOTA: A instalação do MDAC (Microsoft Data Access Components) não resolve o problema.

O MDAC não instala o ficheiro Sqldmo.dll nem nenhuma das várias DLLs dependentes associadas ao ficheiro Sqldmo.dll. No entanto, o MDAC inclui muitas das DLLs relacionadas utilizadas por uma ligação cliente do SQL-DMO. Independentemente disto, a inclusão do MDAC com a instalação da aplicação não será a resposta mais eficiente, porque não necessita de todas as DLLs do MDAC para fazer com que a ligação do DMO funcione. Para além disso, o MDAC instala várias funcionalidades adicionais que provavelmente nunca irá utilizar nos computadores cliente. A ideia fundamental é que não necessita de instalar a totalidade do MDAC para obter a funcionalidade pretendida, apenas as DLLs necessárias. As DLLs são abrangidas mais adiante neste artigo.

Visto que os vários tipos de DLLs e a respectiva localização serão discutidos mais tarde, vamos divagar por um momento e rever resumidamente as DLLs baseadas no Win32 e no COM. Para efeitos deste artigo, basta-lhe saber como distingui-las e o que fazer com elas após as identificar. Tendo isto em vista, eis o que necessita de saber:
  • Necessita de registar as DLLs baseadas no COM através do utilitário Regsvr32.
  • Necessita de colocar as DLLs nativas do Win32 no caminho da aplicação.
  • Também necessita de colocar as DLLs nativas do Win32 no directório Win32.
Por vezes, poderá ser difícil distinguir entre as DLLs baseadas no COM e as DLLs não baseadas no com; no entanto, de uma maneira geral, uma DLL baseada no COM tem sempre os seguintes pontos de entrada:
  • DllGetClassObject
  • DllRegisterServer
  • DllUnregisterServer
  • DllCanUnloadNow
Para ver os pontos de entrada, clique com o botão direito do rato na DLL e, em seguida, clique em Apresentação no menu de atalho. As informações apresentadas estão localizadas na secção "Export Table" das informações sobre a DLL.

Em seguida, encontra-se a lista de DLLs relacionadas com o SQL-DMO de que necessita para activar o DMO a partir de um cliente:
  • Sqldmo.dll
  • Sqldmo.rll
  • Sqlsvc.dll
  • Sqlsvc.rll
  • Sqlwoa.dll
  • Sqlresld.dll
  • Sqlwid.dll
  • W95scm.dll
Na lista de DLLs anterior, Sqldmo.dll é a única que necessita de registar no computador cliente. No entanto, para registar o ficheiro Sqldmo.dll com êxito, o ficheiro Sqldmo.rll tem de estar presente no directório seguinte do computador cliente:
(localização do lado do servidor): c:\Mssql7\Binn\Resources\1033
(localização do lado do cliente): c:\Winnt\System32\Resources\1033
O ficheiro Sqldmo.rll levanta sempre questões. Um ficheiro .rll é um ficheiro de recurso localizado. O directório do recurso varia dependendo do idioma nacional configurado na instalação do SQL Server e do cliente. Nesta instância, o directório 1033 é uma representação decimal do identificador de idioma 0X0409, que representa o Inglês (E.U.A.). Quando este ficheiro .rll estiver no local adequado, poderá registar o ficheiro Sqldmo.dll invocando o utilitário Regsvr32. O comando para registar o ficheiro é o seguinte:
C:\Regsvr32 Sqldmo.dll
				
Após o registo com êxito, deverá receber uma mensagem indicando:
DLLRegisterServer em SQLDMO.dll teve êxito.
Se pretender automatizar o registo na rotina de configuração da aplicação, consulte os vários parâmetros associados ao utilitário Regsvr32. O comando para registar o ficheiro silenciosamente é:
c:\regsvr32 /s- sqldmo.dll
				
O directório que contém o ficheiro Sqldmo.dll tem de possuir uma estrutura específica no computador cliente; caso contrário, poderá receber uma mensagem de erro semelhante à seguinte:
LoadLibrary("C:\Winnt\System32\sqldmo.dll") falhou.
GetLastError devolve 0x0000007e
Este erro significa que ocorreu o erro 126 (expresso na notação decimal), correspondente a um erro "módulo especificado não encontrado". Nesta instância, está relacionado com o ficheiro Sqldmo.rll. Por outras palavras, o utilitário Regsvr32 localizar o ficheiro Sqldmo.dll, mas não consegue concluir o respectivo registo a menos que o ficheiro Sqldmo.rll também esteja disponível no subdirectório 1033 esperado.

Para evitar esta situação, efectue o seguinte procedimento:
  1. Adicione um directório chamado "Resources" à localização onde o ficheiro Sqldmo.dll reside.
  2. Adicione um subdirectório chamado "1033" ao directório Resources.
  3. Copie o ficheiro Sqldmo.rll para este directório.
Quando tiver terminado, a estrutura de directórios deverá ter o seguinte aspecto:
Directório que contém Sqldmo.dll\Resources\1033
E esse directório 1033 deve conter o ficheiro Sqldmo.rll.

Para além das DLLs mencionadas anteriormente, também deverá certificar-se de que possui as DLLs de biblioteca de rede adequadas. As DLLs de biblioteca de rede principais de que necessita são as seguintes:
  • Pipes Nomeados: Dbnmpntw.dll
  • Sockets: Dbmssocn.dll
  • Multiprotocolo: Dbmsrpcn.dll
Estas DLLs são baseadas no Win32, pelo que não necessita de as registar. Basta colocar as DLLs no directório System32 do Microsoft Windows NT ou no directório System do Microsoft Windows 95 ou Windows 98.

Depois de concluir os passos anteriores, a aplicação cliente deverá começar sem qualquer um dos problemas iniciais causados pela ausência dos ficheiros necessários.

A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
Palavras-chave: 
kbinfo KB248241