GuilleSQL :: Microsoft SQL Server, SSIS, y más !!

¿Como consultar un origen de datos ODBC (DSN) desde SQL Server 2005 64-bit a través de OPENROWSET u OPENQUERY + Servidor Vinculado (Proveedor MSDASQL 64-bit)?


Cada día es más habitual necesitar consultar orígenes de datos ODBC (DSN) desde SQL Server 2005, ya sea para importar, para exportar, o simplemente consultar dichos datos. Esto se hace en muchos casos utilizando el proveedor MSDASQL, que se trata de un proveedor OLEDB para acceder a orígenes de datos ODBC (es decir, es un puente OLEDB a ODBC), y en SQL Server utilizar OPENROWSET o un Servidor Vinculado (Linked Server) y OPENQUERY para acceder a dicho origen de datos (DSN). De hecho, este proveedor OLEDB (MSDASQL) también se utiliza en Aplicaciones Web y WinForms, etc. Sin embargo, "de serie" sólo existe la edición MSDASQL de 32-bit. Por ello, si una instalación de SQL Server 2005 64-bit sólo puede acceder a los proveedores OLEDB de 64-bit registrados en dicho servidor ¿Qué hacer para consultar un origen de datos ODBC a través SQL Server 2005 64-bit?

Desde SQL Server 2005 sólo podemos acceder a orígenes de datos externos a través de Proveedores OLEDB. El principal problema, es que en ocasiones utilizamos orígenes de datos ODBC (DSN) a los que accedemos a través del proveedor MSDASQL.dll (puente OLEDB a ODBC) en servidor SQL Server 2005 32-bit o SQL Express 32-bit, utilizando OPENROWSET o bien un Servidor Vinculado (Linked Server) junto con OPENQUERY. En este caso, todo funciona correctamente, como se muestra en el siguiente ejemplo (OPENROWSET, OPENQUERY y crear Servidor Vinculado - Linked Server):

-- *** Ejemplo de OPENROWSET con MSDASQL y un origen de datos ODBC (DSN) ***
-- *** Nota: Antes de nada, dar de alta el origen de datos ODBC ***
-- *** Para ello, utilizar la herramienta administrativa Data Sources (ODBC) ***
SELECT * FROM OPENROWSET('MSDASQL', 'DSN=miDSN', 'SELECT EmpId, EmpName FROM Employees')

-- *** Ejemplo de crear un Servidor Vinculado (Linked Server) con MSDASQL ***
-- *** y un origen de datos ODBC (DSN) ***
-- *** y consultar al Servidor Vinculado utilizando OPENQUERY ***
-- *** Nota: Antes de nada, dar de alta el origen de datos ODBC ***
-- *** Para ello, utilizar la herramienta administrativa Data Sources (ODBC) ***
EXEC sp_addlinkedserver @server = 'miDSN' ,
@srvproduct = 'miProduct',
@provider = 'MSDASQL',
@datasrc = 'miDSN'

SELECT * FROM OPENQUERY(miDSN, 'SELECT EmpId, EmpName FROM Employees')

Sin embargo, cuando implementamos nuestra solución en un servidor SQL Server 2005 64-bit (ya sea x64 o IA64), nos encontramos con dos problemas:

  • Por defecto, NO está disponible el proveedor MSDASQL de 64-bit. Esto supone, que al intentar utilizar el proveedor MSDASQL en un servidor SQL Server 2005 64-bit, obtendremos el error:

    Mens. 7403, Nivel 16, Estado 1, Línea 1.
    The OLE DB provider "MSDASQL" has not been registered.

    Que verdad tan grande !! es que la realidad es que no está registrado, ya que SQL Server 2005 64-bit es un proceso de 64-bit que sólo podrá acceder a los proveedores OLEDB de 64-bit, y por defecto, sólo tendremos instalado el proveedor MSDASQL de 32-bit, al cual no podremos acceder desde SQL Server 2005 64-bit.

    Por suerte, el proveedor MSDASQL 64-bit está disponible para descarga desde la Web de Microsoft desde Mayo de 2008 (no sé que ocurrió dicho mes de Mayo, pero olé-olé ;-). El enlace es el siguiente: 64-Bit OLEDB Provider for ODBC (MSDASQL)

  • Necesitaremos instalar los Drivers ODBC de 64-bit que necesitemos. Es decir, MSDASQL 64-bit es sólo un puente OLEDB 64-bit a ODBC 64-bit. Esto quiere decir, que MSDASQL NO es un puente OLEDB 64-bit a ODBC 32-bit ¿queda claro? Pues bien, necesitaremos instalar los drivers ODBC 64-bit correspondientes. Aquí adquirimos una fuerte dependencia con el correspondiente fabricante, ya que en ocasiones (sobre todo hace unos años) no hay disponibilidad de drivers 64-bit de algunos productos, y en dicho caso, nuestro gozo en un pozo... excepto que podamos utilizar Drivers ODBC 64-bit de terceros (habitualmente de pago), como es el caso de DataDirect (conocidos anteriormente como MERANT y como INTERSOLV, el principal fabricante de drivers ODBC de toda la vida) u Open Link.

Con todo esto realizado, ya estaremos en situación de poder ejecutar consultas a orígenes de datos ODBC a través de OPENROWSET ó a través de Servidores Vinculados (Linked Servers) junto con OPENQUERY, en servidores SQL Server 2005 64-bit (y también en Aplicaciones Web o WinForms de 64-bit, etc. ;-).

También es interesante recordar, que NO es necesario cerrarse en banda con los drivers ODBC. Es decir, existe la alternativa (que además es más recomendale) de utilizar el proveedor OLEDB que necesitemos directamente (en vez de utilizar ODBC a través de MSDASQL). Es decir, en vez de utilizar un Driver ODBC para acceder a un motor de base de datos X a través del proveedor OLEDB MSDASQL ¿Por que no utilizar directamente un proveedor OLEDB para dicho motor de base de datos X? Esto es lo recomendable, ya que MSDASQL es un proveedor puente que lo único que hace es introducir una capa de software intermedia adicional. Además, también es posible obtener Proveedores OLEDB de terceros, como es el caso (al igual que ocurre con los Drivers ODBC) de DataDirect y Open Link, por poner dos ejemplos.

Por último, comentar que el contenido de este artículo ha sido probado sobre servidores de pruebas y sobre servidores de producción con total éxito... y sólo desear que os sirva de ayuda como a mí me ha servido !




Miembros de
Miembros de GITCA (Global IT Community Association)

Menu de Usuario
  Iniciar Sesión
  Registrarse
  Restablecer Contraseña
  Ventajas de Registrarse

Acerca de
  Contigo desde Oct 2007
  771 usuarios registrados
  86146 pageloads/mes
  Ranking Alexa 498160

Social Networks
Sigue a Portal GuilleSQL en Linkedin !!
Sigue a Portal GuilleSQL en Twitter !!



Archivo

Marzo de 2019 (1)
Octubre de 2018 (1)
Julio de 2018 (1)
Junio de 2018 (4)
Mayo de 2018 (5)
Abril de 2018 (3)
Marzo de 2018 (2)
Febrero de 2018 (7)
Enero de 2018 (1)
Diciembre de 2017 (15)
Noviembre de 2017 (7)
Junio de 2017 (3)
Mayo de 2017 (1)
Marzo de 2017 (3)
Enero de 2017 (4)
Junio de 2016 (1)
Mayo de 2016 (2)
Abril de 2016 (2)
Septiembre de 2015 (2)
Agosto de 2015 (2)
Junio de 2015 (10)
Mayo de 2015 (4)
Abril de 2015 (8)
Marzo de 2015 (11)
Octubre de 2014 (3)
Septiembre de 2014 (7)
Agosto de 2014 (5)
Julio de 2014 (2)
Mayo de 2014 (4)
Abril de 2014 (4)
Marzo de 2014 (4)
Febrero de 2014 (1)
Enero de 2014 (5)
Diciembre de 2013 (8)
Noviembre de 2013 (2)
Octubre de 2013 (7)
Septiembre de 2013 (6)
Agosto de 2013 (1)
Julio de 2013 (6)
Junio de 2013 (11)
Mayo de 2013 (7)
Abril de 2013 (6)
Febrero de 2013 (5)
Enero de 2013 (7)
Diciembre de 2012 (12)
Noviembre de 2012 (13)
Octubre de 2012 (5)
Septiembre de 2012 (3)
Agosto de 2012 (6)
Julio de 2012 (4)
Junio de 2012 (1)
Mayo de 2012 (2)
Abril de 2012 (7)
Marzo de 2012 (16)
Febrero de 2012 (9)
Enero de 2012 (5)
Diciembre de 2011 (10)
Noviembre de 2011 (10)
Octubre de 2011 (4)
Septiembre de 2011 (5)
Agosto de 2011 (2)
Julio de 2011 (2)
Junio de 2011 (4)
Mayo de 2011 (2)
Abril de 2011 (6)
Marzo de 2011 (4)
Febrero de 2011 (10)
Enero de 2011 (5)
Diciembre de 2010 (6)
Noviembre de 2010 (4)
Octubre de 2010 (8)
Septiembre de 2010 (4)
Agosto de 2010 (1)
Julio de 2010 (3)
Mayo de 2010 (5)
Abril de 2010 (6)
Marzo de 2010 (8)
Febrero de 2010 (3)
Enero de 2010 (1)
Diciembre de 2009 (9)
Noviembre de 2009 (14)
Octubre de 2009 (2)
Septiembre de 2009 (8)
Agosto de 2009 (2)
Julio de 2009 (10)
Junio de 2009 (9)
Mayo de 2009 (10)
Abril de 2009 (9)
Marzo de 2009 (3)
Febrero de 2009 (2)
Enero de 2009 (3)
Noviembre de 2008 (2)
Octubre de 2008 (2)
Septiembre de 2008 (2)
Agosto de 2008 (5)
Julio de 2008 (5)
Junio de 2008 (1)
Mayo de 2008 (3)
Abril de 2008 (2)
Marzo de 2008 (2)
Febrero de 2008 (2)
Enero de 2008 (5)
Noviembre de 2007 (2)
Octubre de 2007 (2)






Copyright © 2007 GuilleSQL, todos los derechos reservados.