2009-05-11 62 views
8

Tengo una aplicación VB6 heredada que crea un DSN basado en un parámetro en un archivo de configuración. El parámetro es una conexión ODBC y la conexión tiene un nombre (DSN-NAME) que asigna un servidor (DBSERVER) a un controlador ("SQL Server Native Client").Especifique un controlador predeterminado para ODBC

En general, se construye un DSN de la siguiente manera:

DSN = DSN-NOMBRE; Usuario = foo; contraseña = bar

Si puedo especificar un nombre de host en el archivo, se construye una cadena de conexión que dice

DSN = DbServer; usuario = foo; contraseña = bar

El mensaje de error reportado es:

[Microsoft] [Administrador de controladores ODBC] origen de datos no se encuentra y ningún controlador predeterminado

Esto me hace pensar que hay tal vez una forma de especificar un controlador predeterminado, lo que puede significar que puedo especificar solo el nombre del servidor en el archivo de configuración y no es necesario crear la conexión ODBC.

(Soy consciente de que se pueden crear automáticamente, esto es simplemente para la instalación y para satisfacer mi curiosidad).

¿Cómo se especifica un controlador predeterminado? Si puedo configurar el controlador predeterminado para SQL Server Native Client, ¿puedo decir DSN = DBSERVER y conectarme?

Editar: el punto era tratar de hacer esto sin cambiar la cadena de conexión. Toda la investigación sugirió que esto no es posible en realidad, pero la redacción del diálogo sugirió que podría ser.

Respuesta

1

Para especificar un controlador predeterminado, utilice DRIVER = en la cadena de conexión:

DRIVER=driver name here;DATABASE=mydb;USER=foo;PASSWORD=bar 

El nombre del controlador es el nombre que aparece en la herramienta config Panel de control ODBC para cada conductor. Tenga en cuenta que deberá proporcionar la información que normalmente procedería del DSN, en este caso, el nombre de la base de datos.

+0

Gracias, pero para mí, ese no es un controlador "predeterminado", es un controlador "especificado por el usuario". – crb

1

Puede lograr lo que quiera agregando "; SERVER = dbserver" a su cadena de conexión.

Ya hay un servidor especificado en su DSN, pero la palabra clave SERVER en su conexión será anulada.

http://msdn.microsoft.com/en-us/library/ms715433(VS.85).aspx

+0

Práctico, pero no puedo cambiar tanto la cadena de conexión, solo cambio la forma en que se genera. Eventualmente, espero que reescribamos esa aplicación para usar cadenas de conexión sin DSN :) – crb

0

Usar una cadena de conexión sin DSN ... se puede crear 'sobre la marcha' a exactamente la habitación sus propósitos .... no insignificantes con odbcad32.cpl o REG/archivos ini para controlar/configure una dsn requerida.

ver http://support.microsoft.com/kb/147875

para más detalles

+0

Gracias, pero eso no aclara mi pregunta sobre un controlador predeterminado. La cadena de conexión es generada por el código que no puedo cambiar. – crb

+1

Lo siento, no entendí bien. Para aclarar, tengo un par de preguntas de seguimiento. ¿Está utilizando ADO para conectarse con una base de datos de ODBC? ¿Esta base de datos de destino es siempre SQL Server? ¿Siempre conectado a través de Native Client? ¿Desea saber cómo especificar el controlador predeterminado en la cadena de conexión OLEDB y no en el DSN ODBC? Entonces, en esencia, ¿desea utilizar ADO, especificar un proveedor OLEDB de ODBC, proporcionar información adicional en la cadena de conexión OLEDB para especificar el destino SQLServer? – CMB

+0

En este caso, siempre es sí. Pero no puedo cambiar la cadena de conexión generada, de lo contrario solo pondría SERVER = dbserver en ella. – crb

3

que tenía el mismo problema y lo arreglaron utilizando el administrador de ODBC de 32 bits para crear un DSN de 32 bits en lugar de la administración de 64 bits en Herramientas administrativas, que solo crea DSN de 64 bits que no funciona.

El Administrador de ODBC de 32 bits se encuentra en C:\Windows\SysWOW64\odbcad32.exe

Ver este artículo "Data source name not found and no default driver specified" en el blog de Corey Gilmore.

Cuestiones relacionadas