无法开始分布式事务:链接服务器 - > Access数据库

Dan*_*har 6 ms-access msdtc odbc linked-server sql-server-2008

眼镜:

  • Sql Server 2008
  • Server 2008 R2 64位
  • MS Access数据库

什么有效:

  • 我通过安装Office访问数据组件并创建系统DSN等来配置到Access数据库的链接服务器连接.它驻留在同一服务器上的目录中.
  • 我已成功通过openquery查询数据.

    SELECT*FROM OPENQUERY(LINKEDHELL,'SELECT*FROM [D:\ path\mordor.mdb] .Orcs')

  • 我可以通过openquery插入/更新/删除(从Sql Management Studio内部)

什么行不通:

我创建了一个数据库,它公开了一个包含openquery表达式的视图.这允许我的应用程序不知道它通过链接服务器连接查询并允许我使用ORM的事实.例证:实体框架.

但是,在检索数据时,更新/插入/删除不会.我花了很多时间确保MSDTC配置正确,但没有骰子.

我尝试了什么

MSDTC

  • 启用网络DTC访问
  • 允许入站/出站
  • 配置防火墙
  • 启用XA事务
  • 给DTC工作的帐户访问.mdb
  • 进行这些设置后重新启动Sql Server

其他

  • 配置的链接服务器安全性:在sql用户和本地管理员帐户之间创建映射,这样当我使用该sql用户登录时,它使用本地管理员帐户连接到访问数据库.
  • 启用RPC的分布式事务升级:False

我得到的错误:

OLE DB provider "MSDASQL" for linked server "LINKEDHELL" returned message "[Microsoft][ODBC Microsoft Access Driver]Invalid attribute/option identifier ".
Msg 7391, Level 16, State 2, Line 4
The operation could not be performed because OLE DB provider "MSDASQL" for linked server "LINKEDHELL" was unable to begin a distributed transaction.
Run Code Online (Sandbox Code Playgroud)

我可以通过从Sql Management Studio执行此操作来简单地重新创建它

begin distributed transaction

//anything that queries the linked server

commit transaction
Run Code Online (Sandbox Code Playgroud)

那么我错过了什么?我已经读过ODBC驱动程序支持分布式事务,但我不确定ACCESS数据库是否支持.所以如果有人能够证实这一点.那会有所帮助.

Fio*_*ala 1

\n

Access 没有事务,因为 Access 不是数据库引擎。Jet/ACE(Access 的默认数据库引擎)自从我使用它以来就一直支持提交/回滚(自 Jet 2.x 起,例如 1996 年)。\n 它从未支持事务日志记录,并且可能永远不会(我认识到这不是您要问的问题,但许多从服务器数据库背景来到 Jet/ACE 的人对术语“事务”的含义相当模糊,并且有很难理解\n Jet/ACE 支持其中一个而不支持另一个)。\xe2\x80\x93 大卫-W-芬顿 1 月 16 日 \'10\n 23:12

\n
\n\n

--我们在 MS-Access 中有交易吗?

\n\n

大卫·W·芬顿,MVP,安息吧

\n