执行openrowset时出现传输级别错误

9cbw7uwe  于 2021-07-26  发布在  Java
关注(0)|答案(3)|浏览(274)

我试图使用openrowset从csv文件获取数据,但遇到错误:
“msg 109,级别20,状态0,行0从服务器接收结果时发生传输级别错误(提供程序:共享内存提供程序,错误:0-管道已结束。)
我使用了下面的查询

select *
FROM OPENROWSET(
    'Microsoft.ACE.OLEDB.12.0',
    'Text;Database=C:\Users\Public;HDR=Yes;FORMAT=Delimited(;)', 
    'SELECT * FROM [file.csv]'
)

当我使用select时,我曾经能够获得一次查询,但是当我使用列名运行查询时,它导致了上面的错误,现在查询甚至不再使用select工作

41zrol4v

41zrol4v1#

试试这个
打开ssms
展开“服务器对象”>“链接服务器”>“提供程序”
双击提供程序(microsoft.jet.oledb.12.0)
取消选中“allow inprocess”选项

ddarikpa

ddarikpa2#

我今天就想到这个。我最近在我的系统上升级到64位excel,并注意到 OPENROWSET 功能中断。我下载并重新安装了引擎,它似乎已经解决了我的问题。

xmq68pz9

xmq68pz93#

必须对sql server使用此配置

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 

EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1 
EXEC master.[sys].[sp_MSset_oledb_prop] N'Microsoft.ACE.OLEDB.12.0', N'DisallowAdHocAccess', 1
EXEC master.[sys].[sp_MSset_oledb_prop] N'Microsoft.ACE.OLEDB.16.0', N'AllowInProcess', 1

相关问题