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

时间:2012-07-20 08:21:31

标签: sql-server-2008 ms-access odbc msdtc linked-server

规格:

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

什么有效:

  • 我通过安装办公室访问数据组件并创建系统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启用分布式事务的促销:错误

我得到的错误:

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.

我可以通过从Sql Management Studio

执行此操作来重新创建它
begin distributed transaction

//anything that queries the linked server

commit transaction

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

1 个答案:

答案 0 :(得分:1)

  

Access没有事务,因为Access不是数据库   发动机。支持Jet / ACE(Access的默认数据库引擎)   只要我使用它就提交/回滚(因为Jet 2.x,例如,1996)。   它从未支持事务日志记录,可能永远不会支持(I   认识到这不是你所要求的,而是许多即将到来的   来自服务器数据库背景的Jet / ACE相当模糊   “交易”一词的含义,并且很难掌握这一点   Jet / ACE支持一个而不支持另一个)。 - David-W-Fenton 2010年1月16日   在23:12

- Do we have transactions in MS-Access?

David W Fenton, MVP, RIP

相关问题