08 diciembre 2013

Instalar VB6 en Win7 (y II)

Recientemente me vi obligado a cambiar de computadora debido a que a la anterior le falló la tarjeta madre y no me fue posible encontrar una similar para remplazarla.

La nueva computadora traía ya el Windows 7 sin embargo la instalación del Visual Basic 6.0 no fue tan simple como la vez anterior.

En esta ocación el problema ocurrió con dos archivos OCX que son MSCOMCTL y MSCOMCT2 que corresponden a:
  • Controles comunes de Windows 6.0
    • ImageCombo, ImageList, ListView, ProgressBar, Slider, StatusBar, TabStrip, Toolbar, TreeView
  • Controles comunes de Windows 2 6.0
    • Animation, DTPicker, FlatScrollBar, MonthView, UpDown

El mensaje de error dentro del IDE de Visual Basic 6.0 al intentar cargar cualquiera de los componentes es el siguiente:

La biblioteca de objetos no está registrada

Esto aparece a pesar de haber instalado el Service Pack 6 de Visual Basic y de intentar desregistrar y registrar manualmente ambos componentes.

Luego de unos cuantos minutos me percaté de que el problema era ocasionado por las versiones. Para el archivo mscomctl.ocx las versiones eran las siguientes:
  • Previo a instalar VB6 con Windows 7 actualizado (6.1.9834)
  • Después de haber instalado VB6 (6.1.9782)
  • Después de instalar el Service Pack 6 (6.0.8177) 
El procedimiento que me funcionó tras varias pruebas es el siguiente:
  1. Realizar una copia de seguridad de la version de ambos archivos que se encontraban en el sistema operativo.
  2. Desregistrar ambos archivos con la utilidad RegSvr32
  3. Eliminar ambos archivos
  4. Instalar Visual Basic 6.0
  5. Instalar el Service Pack 6
  6. Desregistrar los archivos copiados por la instalación
  7. Copiar las versiones previamente respaldadas
  8. Registrar manualmente con la utilidad RegSvr32
Procedimiento alternativo:
  • Desde la línea de comandos con privilegios elevados, en la carpeta del sistema, debemos registrar el archivo (msdatsrc.tlb) que corresponde a Microsoft Data Source Interfaces for ActiveX :
    
    regtlib msdatsrc.tlb

Enlace al artículo anterior:
Instalar Visual Basic 6.0 en Windows 7

NOTA: parece ser que una de las tantas actualizaciones de Windows ha roto la compatibilidad entre las versiones de estos componentes. También hay que considerar que posterior al Service Pack 6 de Visual Basic hay una actualización de seguridad.

MySQL ODBC Authentication Protocol Refused

En las nuevas versiones del conector ODBC para MySQL nos podemos topar con un mensaje de error como el siguiente:

Connection using old (pre-4.1.1) authentication protocol refused

Lo que nos está indicando es que en el servidor al que intentamos conectarnos se encuentra configurado el parámetro OLD_PASSWORDS o podríamos estar intentando conectarnos a un servidor MySQL anterior a la versión 4.1 en la cual se cambió el protocolo de autenticación.

Si tenemos acceso a la configuración del servidor MySQL lo ideal sería actualizarlo a una versión reciente o desactivar el parámetro OLD_PASSWORDS si fuese MySQL 4.1 o posterior.

La otra opción que tenemos es utilizar una versión previa del conector ODBC. En mi caso la versión 5.1.13 que se puede descargar del sitio de MySQL presentó el mismo problema, pero por suerte tenía guardada la versión 5.1.8 que me saco de apuros.

Scripts grandes en Microsoft SQL Server Management Studio

Cuando intentamos ejecutar un Script contenido en un archivo demasiado grande, el SQL Server Management Studio no lo permitirá y mostrará un mensaje de error indicandonos que se ha producido una excepción de tipo "Out of Memory".


Esto ocurrirá incluso si la consulta se ejecuta en modo SQLCMD.


En este caso deberemos recurrir a la utilidad SQLCMD desde la línea de comandos. Con la siguiente sintaxis:

SQLCMD -S [servidor] -d [base de datos] -E -i [ruta al archivo] 

Por ejemplo:  

SQLCMD -S EQUIPO\SQLExpress -d Documentos -E -i C:\Docs\Data.sql