2015-12-02 129 views
0

我需要编写一个存储过程,它从SQL Server读取数据并将其写入MS Access 2003表。我尝试以下,但它不工作:将数据从SQL Server导出到MS Access

Insert into OpenRowSet 
('Microsoft.Jet.OLEDB.4.0',  
'D:\BEMF_LOAN_RECOVERY.mdb'; 
''; -- User ID 
'', -- Password 
'Select * from access_tbl_name') 
    Select * 
    from sql_server_tbl_name 

错误mesage

消息7308,级别16,状态1,行2
OLE DB提供程序 'Microsoft.Jet.OLEDB.4.0'不能用于分布式查询,因为提供程序被配置为以单线程模式运行。

+1

是否有错误消息? – Richard

+0

您是否意识到相关的'D:'驱动器将成为SQL Server上的驱动器,而不是您本地的PC上,假设它们不同? –

+0

@MattGibson SQL SERVER和file.mdb都在同一台机器上。 – Khan

回答

1

您确定在您的SQL Server上启用了“Ad Hoc Distributed Queries”吗?

默认情况下,SQL Server不允许使用 OPENROWSET和OPENDATASOURCE即席分布式查询。当此选项设置为1时,SQL 服务器允许临时访问。当此选项未设置或设置为 0时,SQL Server不允许临时访问。

https://msdn.microsoft.com/en-us/library/ms187569.aspx