我有一个位于 32 位 sql 服务器上的 Helper DB,并且我添加了一个 64 位的链接服务器,
执行 Excel 导入操作,因为 Jet.oledb 驱动程序在 64 位 sql server 机器上不受支持。
一切正常,但我必须维护链接服务器数据库上发生的插入、更新、删除事务,
我已经在客户端机器和服务器机器上配置了 DTC 服务,
在 sp 顶部添加了 Block 用于存储过程启动时的事务,例如,
BEGIN TRY SET XACT_ABORT ON BEGIN TRANSACTION
BEGIN TRY
设置 XACT_ABORT 开
开始交易
- 代码
- 代码
结束尝试
开始捕捉
IF @@TRANCOUNT<>0 回滚交易
--// 引发错误以登录网站。
声明@ErrorMessage NVARCHAR(4000);
声明@ErrorSeverity INT;
声明@ErrorState INT;
选择
@ErrorMessage = ERROR_MESSAGE(),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE();
RAISERROR (@ErrorMessage, -- 消息文本。
@ErrorSeverity, -- Severity.
@ErrorState -- State.
);
但它抛出了一个错误的说法,
无法执行请求的操作,因为链接服务器“(null)”的 OLE DB 提供程序“Microsoft.Jet.OLEDB.4.0”不支持所需的事务接口。
它在我用来从 Excel 表中读取数据的 Openrowset 函数上引发错误
IE,
SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 5.0;HDR=Yes; IMEX=1;Database=C:\test.xls','SELECT EmployeeID FROM [Sheet$]
where EmployeeID is not null ')
我真的被困住了,因为找不到任何解决方案而变得疯狂,
在此先感谢您的帮助,