SQL Server誤區(qū)30日談 第1天 正在運(yùn)行的事務(wù)在服務(wù)器故障轉(zhuǎn)移后繼續(xù)執(zhí)行
這當(dāng)然是錯(cuò)誤的!
每次故障轉(zhuǎn)移都伴隨著某種形式的恢復(fù)。但是如果當(dāng)正在執(zhí)行的事務(wù)沒有Commit時(shí),由于服務(wù)器或?qū)嵗罎?dǎo)致連接斷開,SQL Server可沒有辦法在故障轉(zhuǎn)移后的服務(wù)器重新建立事務(wù)的上下文并繼續(xù)執(zhí)行事務(wù)-無論你使用的故障轉(zhuǎn)移方式是集群,鏡像,日志傳送或是SAN復(fù)制。
對(duì)于故障轉(zhuǎn)移集群來說,當(dāng)故障轉(zhuǎn)移發(fā)生后,一個(gè)SQL Server實(shí)例在另一個(gè)故障轉(zhuǎn)移集群的節(jié)點(diǎn)啟動(dòng)。所有實(shí)例上的數(shù)據(jù)庫都要經(jīng)歷Recovery階段-也就是所有沒有Commit的事務(wù)都要被回滾。
對(duì)于數(shù)據(jù)庫鏡像來說,來自主體服務(wù)器的日志不斷傳送到鏡像服務(wù)器進(jìn)行Redo操作。當(dāng)鏡像服務(wù)器被切換作為主體服務(wù)器時(shí),原鏡像服務(wù)器的事務(wù)日志將會(huì)變?yōu)镽ecovery模式,這使得好像原鏡像服務(wù)器經(jīng)歷了一次崩潰那樣,在這之后所有的連接都會(huì)導(dǎo)向原鏡像服務(wù)器。
對(duì)于事務(wù)日志傳送來說,事務(wù)日志被定期備份并傳送到輔助服務(wù)器.當(dāng)主服務(wù)器崩潰時(shí),DBA按照恢復(fù)順序?qū)⑤o助服務(wù)器恢復(fù)后上線.但最終步驟都是要執(zhí)行recovery步驟,也就是將沒有提交的事務(wù)進(jìn)行回滾。
對(duì)于SAN復(fù)制來說,本地SAN的I/O被復(fù)制到遠(yuǎn)程SAN上進(jìn)行重放,當(dāng)故障轉(zhuǎn)移發(fā)生后,系統(tǒng)將會(huì)連接到遠(yuǎn)端SAN但數(shù)據(jù)庫仍然需要執(zhí)行recovery步驟,這和故障轉(zhuǎn)移集群極其類似。
“唯一”使得正在執(zhí)行的事務(wù)在故障轉(zhuǎn)移發(fā)生后仍然得以繼續(xù)執(zhí)行的技術(shù)使用帶有實(shí)時(shí)遷移功能的虛擬化技術(shù),因?yàn)檫@時(shí)連接本身并不知道其連接的對(duì)象已經(jīng)變?yōu)榱硪慌_(tái)物理服務(wù)器。
但是無論使用那種技術(shù),如果”連接”失效,正在執(zhí)行的事務(wù)將會(huì)丟失,所以處理這類問題的這部分工作就需要在程序中用代碼實(shí)現(xiàn)某種“重新執(zhí)行”的功能。
相關(guān)文章
sqlserver建立新用戶及關(guān)聯(lián)數(shù)據(jù)庫教程
本文講的是SQLserver數(shù)據(jù)庫創(chuàng)建新用戶方法以及賦予此用戶特定權(quán)限的方法,非常的簡單實(shí)用,有需要的小伙伴可以參考下2018-01-01SqlServer使用公用表表達(dá)式(CTE)實(shí)現(xiàn)無限級(jí)樹形構(gòu)建
本文給大家分享的是sqlserver中使用公用表表達(dá)式(CTE)實(shí)現(xiàn)無限級(jí)樹形構(gòu)建的詳細(xì)代碼,非常的簡單實(shí)用,有需要的小伙伴可以參考下2017-08-08過程需要參數(shù) ''@statement'' 為 ''ntext/nchar/nvarchar'' 類型
過程需要參數(shù)2009-04-04卸載VS2011 Developer Preview后Sql Server2008 R2建立數(shù)據(jù)庫關(guān)系圖報(bào)“找不到指定的
話說上回我為了嘗嘗螃蟹的味道而裝了 VS2011 Developer Preview,但是裝完后立馬卸載掉了,原因是這家伙的安裝目錄位置沒用,我設(shè)置到D盤的但是裝完后D盤的文件夾只有一百多M,而足足8G+的空間是在C盤上消耗的。2011-11-11Sql Server數(shù)據(jù)庫各版本功能對(duì)比
這篇文章主要介紹了Sql Server數(shù)據(jù)庫各版本功能對(duì)比的相關(guān)資料,包括各個(gè)版本新增的功能介紹,需要的朋友可以參考下2017-05-05SQL Server 存儲(chǔ)過程遇到“表 ''''#TT'''' 沒有標(biāo)識(shí)屬性無法執(zhí)行 SET 操作”錯(cuò)誤
這篇文章主要介紹了SQL Server 存儲(chǔ)過程遇到“表 '#TT' 沒有標(biāo)識(shí)屬性無法執(zhí)行 SET 操作”錯(cuò)誤 的相關(guān)資料,需要的朋友可以參考下2016-07-07