Microsoft.ACE.OLEDB.12.0不支持隔离级别,也不支持它的强化

我使用Microsoft.ACE.OLEDB.12.0将Excel文件转换为数据库,我得到这个错误:

无法启动OLE DB提供程序的事务

“Microsoft.ACE.OLEDB.12.0”用于链接服务器“(null)”。 OLE DB提供程序“Microsoft.ACE.OLEDB.12.0”用于链接服务器“(null)”返回消息“既不支持隔离级别也不强化它

当我在服务器上运行分析器时,我看到这些命令运行:

declare @p7 int set @p7=NULL exec sp_executesql N'EXEC @RETURN_VALUE = [dbo].[SYSMain_ExcelImport] @ExcelPath = @p0, @StoredProcedure = @p1, @SheetName = @p2, @DoneByPersonID = @p3',N'@p0 nvarchar(4000),@p1 nvarchar(4000),@p2 nvarchar(4000), @p3 int,@RETURN_VALUE int output', @p0=N' E:\TolueCRM\TolueCRM\upload \SYSMain_ExcelReadyForImport 57\3.xlsx' ,@p1=N'SYSMain_Excel_SendigRecievingDebitCustomer', @p2=N'sheet1',@p3=101,@RETURN_VALUE=@p7 output select @p7 

当我直接在Management Studio中运行它时,我不会收到任何错误,并且它可以正常工作。

然后profiler显示这个命令:

 exec sp_reset_connection 

然后 :

 -- network protocol: LPC set quoted_identifier on set arithabort off set numeric_roundabort off set ansi_warnings on set ansi_padding on set ansi_nulls on set concat_null_yields_null on set cursor_close_on_commit off set implicit_transactions off set language us_english set dateformat mdy set datefirst 7 set transaction isolation level serializable 

我想设置为可序列化的隔离级别导致这个错误,最后:错误消息是创build:

 declare @p8 int set @p8=1 exec sp_executesql N'EXEC @RETURN_VALUE = [dbo].[SYSMainSproc_EntitiesAllField_Update] @ID = @p0, @IDVAlue = @p1, @Entity = @p2, @strset = @p3, @DoneByPersonID = @p4',N'@p0 nvarchar(4000),@p1 int,@p2 nvarchar(4000) ,@p3 nvarchar(4000),@p4 int, @RETURN_VALUE int output', @p0=N'SYSMain_ExcelReadyForImportID', @p1=57,@p2=N'SYSMain_ExcelReadyForImport', @p3=N' Description= N''Cannot start a transaction for OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)". OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)" returned message "Neither the isolation level nor a strengthening of it is supported.".''', @p4=101,@RETURN_VALUE=@p8 output select @p8 

我猜提供者不能工作在可序列化的隔离级别,但我不知道哪个部分将隔离级别设置为可序列化。

让我添加一些其他的东西:这个错误有时不会发生! 而当我通过应用程序转换工作正确!

在此先感谢您的帮助

Interesting Posts