我正在寻找有关 dtc 跟踪文件内容的一些文档。有些列是可以理解的,例如“pid”可能是进程 ID。但什么是“潮”。猜测会让我找到事务 ID 或线程 ID。
这个问题的原因是,在大多数情况下,一个事务的所有日志行的 tid 都是相同的,但在一些情况下,tid 不同,并且在同时发生的两个事务之间混合。在这些情况下,看起来我最终会在 SQL Server 中得到一个孤立的事务,
在我得出任何结论之前,我需要知道什么是 tid。
我正在尝试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
Run Code Online (Sandbox Code Playgroud)
它返回错误:
链接服务器“LIVE”的 OLE DB 访问接口“SQLNCLI”返回消息“无法在此会话上启动更多事务。”。
消息 7395,级别 16,状态 2,第 3 行
无法为链接服务器“LIVE”的 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, …
Run Code Online (Sandbox Code Playgroud)