AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 513422
Accepted
Ian Boyd
Ian Boyd
Asked: 2013-06-06 06:03:06 +0800 CST2013-06-06 06:03:06 +0800 CST 2013-06-06 06:03:06 +0800 CST

SQL Server 链接服务器:“无法在此会话上启动更多事务。”

  • 772

我正在尝试INSERT对链接服务器执行操作:

DBCC TRACEON (3604, 7300)

BEGIN TRANSACTION

INSERT INTO LIVE.Contoso.dbo.Events (EventGUID, EventDate, LoginGUID, UserGUID, EventType, Notes, TargetGUID) 
VALUES ('{494D023F-CD5A-11E2-9F18-C86000D0B92A}', getdate(), '{3B4F90C0-CD5A-11E2-9F18-C86000D0B92A}', '{494D023D-CD5A-11E2-9F18-C86000D0B92A}', 1, N'Test notes', '{494D023E-CD5A-11E2-9F18-C86000D0B92A}')

ROLLBACK TRANSACTION

并返回错误:

链接服务器“实时”的 OLE DB 提供程序“SQLNCLI”返回消息“无法在此会话上启动更多事务。”。
消息 7395,级别 16,状态 2,第 3 行
无法为链接服务器“实时”的 OLE DB 提供程序“SQLNCLI”启动嵌套事务。因为 XACT_ABORT 选项设置为 OFF,所以需要嵌套事务。

此本地数据库已从 2000 年(查询有效)移至 2005 年(查询无效)。远程服务器是2008 R2。

你试过什么?

我两年前提出的这个问题的详尽清单。

你是如何创建链接服务器的?

--EXEC master.dbo.sp_dropserver @server = N'LIVE'
EXEC master.dbo.sp_addlinkedserver @server = N'LIVE', @srvproduct=N'', @provider=N'SQLOLEDB', @datasrc=N'vader'
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname = N'LIVE', @locallogin = NULL, @useself = N'False', @rmtuser = N'Contoso', @rmtpassword = N'Battery Horse Staple Correct'

但是你试过什么?

  • 我禁用了两台服务器上的所有 MSDTC 安全选项

    在此处输入图像描述

  • 检查时钟是否同步(由于某些未知原因,如果它们不同步,将破坏各种身份验证方案)

    在此处输入图像描述

  • 我在两台服务器上都禁用了防火墙(没有截图;你必须相信我)

  • 离开重新加入域

服务器的版本是多少?

  • 本地:Microsoft SQL Server 2005 - 9.00.1399.06 (Intel X86) Oct 14 2005 00:33:37 Copyright (c) 1988-2005 Microsoft Corporation Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2)
  • 链接遥控器:Microsoft SQL Server 2008 R2 (SP2) - 10.50.4000.0 (X64) Jun 28 2012 08:36:30 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)
sql-server
  • 1 1 个回答
  • 21401 Views

1 个回答

  • Voted
  1. Best Answer
    Sam
    2013-06-07T10:05:57+08:002013-06-07T10:05:57+08:00

    来自的文档SET XACT_ABORT:

    对于大多数 OLE DB 提供程序(包括 SQL Server)的隐式或显式事务中的数据修改语句,必须将 XACT_ABORT 设置为 ON。唯一不需要此选项的情况是提供程序支持嵌套事务。”

    也许您在 2000 年使用的是支持嵌套事务的提供程序。似乎您需要设置XACT_ABORT. 不确定这是否适合您的生产代码正在做的事情。

    这个答案可能会有所帮助:在存储过程中使用“SET XACT_ABORT ON”有什么好处?

    • 6

相关问题

  • sql server 连接字符串上的网络数据包大小以提高吞吐量

  • 基于 Microsoft 的服务器(IIS、MSSQL 等)上的病毒扫描应排除哪些内容?

  • SQL 洗衣清单

  • OPENROWSET、二进制文件、varchars 和 varbinaries

  • 聚集索引与非聚集索引?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve