当前位置:网站首页>Talk about the SQL server version of DTM sub transaction barrier function
Talk about the SQL server version of DTM sub transaction barrier function
2022-07-04 05:22:00 【catcherwong】
background
I wrote two articles on how to use it C# be based on DTM Make it easy SAGA and TCC Of distributed transactions , There is a sub transaction barrier function , Good handling of null compensation 、 Hang 、 Repeated requests and other abnormal problems .
But the previous examples are based on mysql Of , It was asked if other databases were supported .
Obviously this is supported , Relational databases , except mysql, And support pgsql and sql server .
Some existing systems , There must be a lot more based on sql server Developed , If this batch of systems want to access DTM, There is no need to move the database first and then access .
So next , Lao Huang will take you through the experience based on sql server Version of DTM Sub transaction barrier function .
The example will be based on the previous SAGA Examples of transformation .
Sub transaction barrier table
Use the sub transaction barrier first , It is essential to prepare a sub transaction barrier table , So this sub transaction barrier table should be placed under the database of that instance ?
All you need to do here is make sure , The business data to be operated and the sub transaction barrier can be in the same local transaction .
The following is for SQL Server Table of SQL.
IF EXISTS (SELECT * FROM sysobjects WHERE id = object_id(N’[dbo].[barrier]’) and OBJECTPROPERTY(id, N’IsUserTable’) = 1)
BEGIN
DROP TABLE [dbo].[barrier]
END
GO
CREATE TABLE [dbo].[barrier]
(
[id] bigint NOT NULL IDENTITY(1,1) PRIMARY KEY,
[trans_type] varchar(45) NOT NULL DEFAULT(''),
[gid] varchar(128) NOT NULL DEFAULT(''),
[branch_id] varchar(128) NOT NULL DEFAULT(''),
[op] varchar(45) NOT NULL DEFAULT(''),
[barrier_id] varchar(45) NOT NULL DEFAULT(''),
[reason] varchar(45) NOT NULL DEFAULT(''),
[create_time] datetime NOT NULL DEFAULT(getdate()) ,
[update_time] datetime NOT NULL DEFAULT(getdate())
)
GO
CREATE UNIQUE INDEX[ix_uniq_barrier] ON[dbo].[barrier]
([gid] ASC, [branch_id] ASC, [op] ASC, [barrier_id] ASC)
WITH(IGNORE_DUP_KEY = ON)
GO
Copy code The key here is the unique index , There is one IGNORE_DUP_KEY = ON. This is actually for equivalence mysql Of insert ignore.
In fact, the preparatory work has already been completed here .
Here is an example after the transformation , Not much to do , Just switch some configurations .
Switch configuration
To be in InApi Which specifies the sub transaction barrier Database type and Custom table name .
Perform the following configuration before startup
// Appoint Sub transaction barrier The database type is sql server
Dtmcli.DtmImp.DbSpecialDelegate.Instance.SetCurrentDBType("sqlserver");
// Appoint Table name of the sub transaction barrier table
Dtmcli.BranchBarrier.SetBarrierTableName("[test].[dbo].[barrier]");
Copy code For the table name , Lao Huang suggested adding the name of the library .
PS: This setting should be put into the configuration file later , At this stage, it is basically to maintain and go The version is written in a similar way .
Last but not least is to change the connection string and SqlConnection 了 .
public class Db
{
private static readonly string _conn = "Data Source=127.0.0.1, 1433;Initial Catalog=test;user id=dev;password=123456;TrustServerCertificate=True;";
public static DbConnection GeConn() => new Microsoft.Data.SqlClient.SqlConnection(_conn);
}
Copy code Come here , All the transformation has been completed . Let's take a look at the specific example demonstration .
Example demonstration
Here's a demonstration of Talk about how to use it C# Easily complete a SAGA Distributed transactions There are two problems: null compensation and idempotence .
Let's look at the short compensation .
Let's look at idempotent
The log output and behavior effect are basically consistent .
Finally, look at the data in the database
At the end
In this article , Describes how to use in the sub transaction barrier SQL Server As underlying storage . I hope it will be helpful for you to study distributed transactions .
Sample code of this article : DtmMsSqlSample
Reference material
Follow my public number 「 No, Lao Huang 」, I will share what Lao Huang has seen and heard with you for the first time .
边栏推荐
- The data mark is a piece of fat meat, and it is not only China Manfu technology that focuses on this meat
- 2022危险化学品经营单位安全管理人员上岗证题库及答案
- RSA加密应用常见缺陷的原理与实践
- How to use postman to realize simple interface Association [add, delete, modify and query]
- 光模块字母含义及参数简称大全
- LM小型可编程控制器软件(基于CoDeSys)笔记二十一:错误3703
- Flink1.13 basic SQL syntax (II) join operation
- Remote desktop client RDP
- June 2022 summary
- 远程桌面客户端 RDP
猜你喜欢

Supplement the JS of a video website to decrypt the video

Flutter ‘/usr/lib/libswiftCore. dylib‘ (no such file)

Principle and practice of common defects in RSA encryption application
![How to use postman to realize simple interface Association [add, delete, modify and query]](/img/e9/bf89eacdebcf2ec84c8a08c28b9ca8.png)
How to use postman to realize simple interface Association [add, delete, modify and query]

模拟小根堆

Integer type of C language

Headache delayed double deletion

Graduation design of small programs -- small programs of food and recipes

TCP状态转换图

c语言经典指针和数组笔试题解析
随机推荐
2022广东省赛——编码信息获取 解析flag
全国职业院校技能大赛(中职组)网络安全竞赛试题—解析
IP时代来临,电竞酒店如何借好游戏的“东风”?
[matlab] matlab simulates digital baseband transmission system eye diagram of bipolar baseband signal (cosine roll off forming pulse)
2022 question bank and answers for safety management personnel of hazardous chemical business units
Simple g++ and GDB debugging
NTFS security permissions
Letter meaning and parameter abbreviation of optical module Daquan
KMP match string
[matlab] matlab simulation modulation system FM system
Remote desktop client RDP
Programming example of stm32f1 and stm32subeide -74hc595 drives 4-bit 7-segment nixie tube
Annex 4: scoring criteria of the attacker docx
2022g2 power station boiler stoker special operation certificate examination question bank and answers
谷歌 Chrome 浏览器将支持选取文字翻译功能
[matlab] communication signal modulation general function interpolation function
c语言经典指针和数组笔试题解析
Notepad++--显示相关的配置
laravel 中获取刚刚插入的记录的id
远程桌面客户端 RDP