Migrando informações de ODBC através de um arquivo de lote

1

Eu sou um técnico de suporte de desktop que trabalha atualmente em um projeto de migração em grande escala em vários sites. Eu estou olhando para uma maneira de transferir entradas de ODBC do Windows XP para o Windows 7. Se alguém souber de um programa ou qualquer coisa pré-construída que já faz isso, por favor, me redirecione. Eu já olhei, mas não encontrei nada, então estou tentando construir o meu próprio.

Eu sei programação básica suficiente para ler o trabalho dos outros e brincar com algo que já existe, mas não muito mais. Eu me deparei com um arquivo de lote personalizado escrito em um site que (entre outras coisas) exporta informações ODBC do computador antigo e as armazena em um servidor (rotulado como y: através do uso de rede no início do arquivo), transferências posteriores do servidor para um novo computador. O código pré-existente é para as migrações do Windows XP para o XP. Aqui estão os bits de código pertencentes:

echo Exporting ODBC Information
start /wait regedit.exe /e "y:\%username%\odbc.reg" HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI

(e mais tarde)

echo Importing ODBC
start /wait regedit /s "y:\%username%\odbc.reg"

Agora estamos migrando do Windows XP para o 7 e essa parte do arquivo em lote ainda parece funcionar para esse site específico, no qual o Oracle 8i e o 10g são usados. Eu estou olhando para usar a minha versão reduzida deste código em vários sites, e eu estou querendo saber se as mesmas linhas de código ainda funcionarão para qualquer coisa diferente de Oracle.

Além disso, minha pesquisa sobre esse assunto mostrou que há locais diferentes em sistemas operacionais de 64 bits para entradas de 32/64 bits, e estou imaginando qual efeito isso teria no código. Eu poderia copiar os mesmos dados para ambas as partes do registro, na esperança de pegar tudo?

Qualquer ajuda seria apreciada. Obrigado pelo seu tempo.

    
por DeskSide 20.11.2012 / 18:21

1 resposta

1

Sim, você está no caminho certo. Na verdade, existem duas chaves de registro nas quais você terá interesse dependendo se você tiver configurado portas TCP personalizadas para as conexões ODBC, etc:

HKLM \ SOFTWARE \ Wow6432Node \ ODBC \ ODBC.INI \

HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ MSSQLServer \ Client \

HKLM é onde os DSNs do sistema são armazenados. HKCU é onde os DSNs do usuário são armazenados para o usuário atual.

A parte Wow6432Node só estará presente se você estiver olhando para entradas ODBC de 32 bits em um sistema de 64 bits. Se você estiver examinando entradas ODBC de 32 bits em um sistema de 32 bits, não verá a pasta Wow6432Node. Se você estiver examinando entradas ODBC de 64 bits em um sistema de 64 bits, não verá a pasta Wow6432Node. (Você pode substituir "32bit on 32bit" e "64bit on 64bit" pela palavra "native".) Você pode executar o código de 32bit em um computador de 64 bits, mas ele não é considerado "nativo".

Se você estiver exportando as entradas de ODBC de uma plataforma de 32 bits e importando-as para um sistema operacional de 64 bits, será necessário colocá-las no local apropriado na pasta Wow6432Node.

Para ver isso de outra forma, entre em um computador Windows 7 de 64 bits. Execute o Windows \ System32 \ odbcad32.exe. Isso é nativo (versão de 64 bits). Adicione uma conexão ODBC lá.

Agora, execute o Windows \ SysWOW64 \ odbcad32.exe na mesma máquina. Essa é a versão de 32 bits (WoW64 significa Win32 Emulation no Windows de 64 bits.) Você notará que a conexão ODBC que você criou não está lá. Porque você não está mais vendo conexões ODBC nativas. Você está olhando para os 32 bits.

É por isso que você precisa prestar atenção à arquitetura da qual a conexão ODBC está vindo e à arquitetura para a qual você está importando.

edit: Minha explicação é provavelmente tão clara quanto a lama, mas se você quiser uma explicação melhor do redirecionamento do sistema de arquivos e do redirecionamento do registro para processos de 32 bits rodando no Windows 64bits, sugiro Windows Internals, 6th Ed. / em> por Mark Russinovich, et al. Parte I, Capítulo 3.

edição # 2: Não, você não pode apenas copiar as chaves do registro para ambos os locais e esperar que tudo ocorra. O sistema preferirá os nativos, o que não funcionará se eles precisarem estar no contexto de 32 bits.

    
por 21.11.2012 / 21:44