首页 > 解决方案 > 存储过程中的 Openrowset 给出传输级错误

问题描述

GO
CREATE PROCEDURE sp_UploadExcel
    @Path VARCHAR(MAX) = NULL
AS
    BEGIN
        DECLARE @sql varchar(MAX);
        SET @sql = 'INSERT INTO TABLE SELECT * FROM OPENROWSET(''Microsoft.ACE.OLEDB.12.0'',
          ''Excel 12.0; Database='+@Path+''',[Data$]);';
        EXEC (@sql);
    END
GO

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

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

EXEC sp_UploadExcel @Path = 'path\file.xlsx'

得到

从服务器接收结果时发生传输级错误。(提供者:共享内存提供者,错误:0 - 管道已结束。)

服务停止

如果需要,这里是连接字符串:

服务器=localhost\MSSQLSERVER02;数据库=master;Trusted_Connection=True;

被困在这几个小时,任何信息将不胜感激

标签: sqlsql-serveropenrowset

解决方案


推荐阅读