CONSULTA ENTRE ACCESS Y SQLSERVER
Publicado por jorge (4 intervenciones) el 09/03/2007 18:32:49
Hola, quiero hacer una consulta de inserción de registros en una base de datos Access (en local) mediante ADO. Los registros proceden de una consulta de selección a una base de datos de SQL Server del servidor al cual me conecto por ODBC. Hice una consulta desde la conexión ADO de Accesss que funciona perfectamente, algo parecido a:
INSERT INTO TBL_ACCESS SELECT * FROM OPENDATASOURCE('SQLOLEDB','Data Source=AAA;User ID=user;Password=password'
).Northwind.dbo.TBL_SQLSERV
Pero resulta demasiado lenta (supongo que es porque la base de datos de SQL Server es demasiado grande como para manejarla desde la conexión de Access. Hay más de 30000 tablas y son bastante grandes). Así que, resulta más rápido trabajar con dos conexiones y sus correspondientes recordsets (con la de SQLServer hago la consulta de selección y luego recorro el recordset, pasando cada registro a otro abierto en Access). Pero sigue siendo horriblemente lento. Lo que querría hacer es trabajar sólo desde la conexión de SQL Server e insertar directamente los registros en mi base de datos local de Access mediante una sola consulta. Creo que sería más rápido (supongo, porque soy bastante novato con SQL Server), aunque no sé si es posible: el problema sería cómo puedo indicar en la consulta que quiero insertar los datos en una base de datos que está en mi propio equipo, en local.
(Nota: Probé vinculando tablas, pero es aún peor dado el tamaño de las tablas de origen)
Muchas gracias.
INSERT INTO TBL_ACCESS SELECT * FROM OPENDATASOURCE('SQLOLEDB','Data Source=AAA;User ID=user;Password=password'
).Northwind.dbo.TBL_SQLSERV
Pero resulta demasiado lenta (supongo que es porque la base de datos de SQL Server es demasiado grande como para manejarla desde la conexión de Access. Hay más de 30000 tablas y son bastante grandes). Así que, resulta más rápido trabajar con dos conexiones y sus correspondientes recordsets (con la de SQLServer hago la consulta de selección y luego recorro el recordset, pasando cada registro a otro abierto en Access). Pero sigue siendo horriblemente lento. Lo que querría hacer es trabajar sólo desde la conexión de SQL Server e insertar directamente los registros en mi base de datos local de Access mediante una sola consulta. Creo que sería más rápido (supongo, porque soy bastante novato con SQL Server), aunque no sé si es posible: el problema sería cómo puedo indicar en la consulta que quiero insertar los datos en una base de datos que está en mi propio equipo, en local.
(Nota: Probé vinculando tablas, pero es aún peor dado el tamaño de las tablas de origen)
Muchas gracias.
Valora esta pregunta
0