首页 > 解决方案 > 执行 OPENROWSET 时出现传输级错误

问题描述

我正在尝试使用 OPENROWSET 从 CSV 文件中获取数据,但遇到错误:
“消息 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 * 查询也不再起作用

标签: sqlopenrowset

解决方案


您必须将此配置用于 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

推荐阅读