如何通过传递查询将Access表中的数据附加到SQL Server表?

时间:2012-10-18 09:32:54

标签: ms-access sql-server-2008-r2 append pass-through

似乎只能使用传递查询从SQL Server表和MS Access中检索数据。但另一种方式呢?从Access表到SQL Server表。

当我需要高性能时,我在MS Access中有哪些选择?
(将附加查询附加到链接表的常规方法只是太慢

在传递查询中,我无法引用MS Access表或查询,因此我的INSERT INTO语句无法工作。通过VBA有解决方法吗?

2 个答案:

答案 0 :(得分:0)

您可以在直通查询中使用OPENROWSET。

SELECT id,
       atext
INTO   anewtable
FROM   OPENROWSET('Microsoft.ACE.OLEDB.12.0',
                  'z:\docs\test.accdb'; 'admin';'',table1); 

您可能需要部分或全部选项:

sp_configure 'show advanced options', 1;
RECONFIGURE;
GO
sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;
GO

EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0',
     N'AllowInProcess', 1
GO
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', 
     N'DynamicParameters', 1
GO

我怀疑它会更快。

答案 1 :(得分:0)

在Access中可以使用宏来动态创建使用SetValue的传递查询定义(我认为现在称为SetProperty)。基本上,您可以更新现有传递查询的查询定义,然后运行它。我这样做了一次,而且速度要快得多,但那是很久以前的事了。我可能有一段VB循环通过表来创建查询。