SQLServer之創建分散式事務

来源:https://www.cnblogs.com/vuenote/archive/2018/11/09/9933633.html
-Advertisement-
Play Games

分散式事務創建註意事項 指定一個由 Transact-SQL 分散式事務處理協調器 (MS DTC) 管理的 Microsoft 分散式事務的起點。 執行 BEGIN DISTRIBUTED TRANSACTION 語句的 SQL Server 資料庫引擎的實例是事務創建者,並控制事務的完成。 當為 ...


分散式事務創建註意事項

指定一個由 Transact-SQL 分散式事務處理協調器 (MS DTC) 管理的 Microsoft 分散式事務的起點。

執行 BEGIN DISTRIBUTED TRANSACTION 語句的 SQL Server 資料庫引擎的實例是事務創建者,並控制事務的完成。 當為會話發出後續 COMMIT TRANSACTION 或 ROLLBACK TRANSACTION 語句時,控制實例請求 MS DTC 在所涉及的所有實例間管理分散式事務的完成。

事務級別的快照隔離不支持分散式事務。

資料庫引擎的遠程實例登記到分散式事務中的主要方法是當已在分散式事務中登記的會話執行引用鏈接伺服器的分散式查詢時。

例如,如果在伺服器 A 上發出 BEGIN DISTRIBUTED TRANSACTION,則該會話將調用伺服器 B 上的一個存儲過程和伺服器 C 上的另一個存儲過程。 伺服器 C 上的存儲過程執行針對伺服器 D 的分散式查詢,這樣該分散式事務將涉及所有四台電腦。 伺服器 A 上的 資料庫引擎的實例是該事務的初始控制實例。

Transact-SQL 分散式事務涉及的會話並不獲取可以傳遞給另一個會話的事務對象,從而也不能將其顯式登記在分散式事務中。 遠程伺服器登記到事務中的唯一方法是成為分散式查詢或遠程存儲過程調用的目標。

在本地事務中執行分散式查詢時,如果目標 OLE DB 數據源支持 ITransactionLocal,則該事務被自動提升為分散式事務。 如果目標 OLE DB 數據源不支持 ITransactionLocal,則只允許在分散式查詢中執行只讀操作。

已在分散式事務中登記的會話執行一個引用遠程伺服器的遠程存儲過程調用。

sp_configure remote proc trans 選項控制對本地事務中的遠程存儲過程調用是否自動使本地事務被提升為由 MS DTC 管理的分散式事務。 連接級別 SET 選項 REMOTE_PROC_TRANSACTIONS 可用於覆蓋由 sp_configure remote proc trans 建立的實例預設值。啟用本選項後,遠程存儲過程調用會使一個本地事務被提升為分散式事務。 創建 MS DTC 事務的連接成為該事務的創建者。COMMIT TRANSACTION 初始化一個 MS DTC 協調的提交。 如果啟用了 sp_configure remote proc trans 選項,本地事務中的遠程存儲過程調用將被自動保護,成為分散式事務的一部分,而不需要重寫應用程式以便專門發出 BEGIN DISTRIBUTED TRANSACTION 而不是 BEGIN TRANSACTION。

要求具有 public 角色的成員身份。

使用T-SQL腳本創建分散式事務

語法:

--聲明資料庫引用

use 資料庫名稱;

go

--開啟分散式事務

begin distributed { tran | transaction } [ transaction_name | @tran_name_variable ]

beign

資料庫事務操作;

end

go

語法解析:

--distributed
--分散式事務關鍵字標識符

--transaction_name
--用戶定義的事務名,用於跟蹤 MS DTC 實用工具中的分散式事務。 transaction_name 必須符合標識符規則,字元數必須 <= 32。

--@tran_name_variable
--用戶定義的一個變數名,它含有一個事務名,該事務名用於跟蹤 MS DTC 實用工具中的分散式事務。 必須使用 char、varchar、nchar 或 nvarchar 數據類型聲明該變數。

示例:

--聲明資料庫引用
use testss;
go

--開啟分散式事務
begin distributed transaction distributedtran
begin
declare @rowcounts int =0;

insert into Tests.dbo.test1(name,sex,height,age,classid) values('分散式事務測試','女','178','20','1');
set @rowcounts=@rowcounts+(select @@ROWCOUNT);

insert into testss.dbo.test1(name,sex,height,age,classid) values('分散式事務測試','女','178','20','1');
set @rowcounts=@rowcounts+(select @@ROWCOUNT);

if @rowcounts=2
commit transaction distributedtran;
else
rollback transaction distributedtran;
end
go

示例結果:

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 為什麼plsql的database下拉為空?我在tnsnames.ora中設置了字元串ORCL,疑惑了我好久,在網上找了許久解決方案,終於是解決了!如下對我的解決過程做一個記錄。 ...
  • 機房意外斷電斷網不得不預防,下麵模擬測試某機房斷電斷網,B機房斷電斷網後A機房可正常提供服務,A機房斷電斷網後可能需要強制重啟繼續提供服務了,目前查看數據都還在,暫時沒驗證是否有數據丟失,小試了一把。。。大概架構A機房192.168.70.214:27017 (為primary,其他節點都是SECO ...
  • 每個人都在說大數據,但是大數據到底是什麼?很多人都沒有搞清楚。所以大數據學習要學什麼知識自然就不是非常清楚了。 什麼是大數據?其實從字面意義上講,我們就可以進行簡單的瞭解,大數據就是大的數據,也可以稱之為海量數據或巨量數據。大數據相對的就是小數據或者普通數據,大數據與小數據或平臺數據的區別在哪裡呢? ...
  • 鎖概述 MySQL的鎖機制,就是資料庫為了保證數據的一致性而設計的面對併發場景的一種規則。 最顯著的特點是不同的存儲引擎支持不同的鎖機制,InnoDB支持行鎖和表鎖,MyISAM支持表鎖。 表鎖就是把整張表鎖起來,特點是加鎖快,開銷小,不會出現死鎖,鎖粒度大,發生鎖衝突的概率高,併發相對較低。 行鎖 ...
  • mysql資料庫連接異常問題(總結) 1.1 前言 最近項目由1個數據源增加至了3個數據源(連接池使用C3P0),結果各種奇葩的資料庫連接問題接踵而至,為防止將來再次遇到同樣的問題不犯同樣錯誤,現總結如下。 1.2 An attempt by a client to checkout a Conne ...
  • 什麼是事務 事務是現代資料庫的核心概念之一,它表示資料庫一系列操作的集合。這些操作必須在一個事務當中,要麼全部執行成功,要麼全部不執行。 ACID原則 原子性(Atomicity) 原子性是指事務包含的所有操作要麼全部成功,要麼全部失敗回滾,因此事務的操作如果成功就必須要完全應用到資料庫,如果操作失 ...
  • 歡迎大家前往 "騰訊雲+社區" ,獲取更多騰訊海量技術實踐乾貨哦~ 本文由 "騰訊雲資料庫 TencentDB" 發表於 "雲+社區專欄" 今天我分享的主題內容大概是兩部分,最主要的還是小游戲和小程式,第一部分就是跟大家分享下我們在現網運營中服務小游戲以及爆款小游戲積累的經驗。在現網運維中我們做了一 ...
  • 作者:天山老妖S 鏈接:http://blog.51cto.com/9291927 一、事務簡介 1、事務簡介 事務(Transaction)是指作為單個邏輯工作單元執行的一系列操作。 2、事物的特效 A、原則性(Atomicity) 表示組成一個事物的多個資料庫操作是一個不可分隔的原子單元,只有所 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...