一次難忘的 MTS 故障的排除過程

2021-09-05 13:47:32 字數 1622 閱讀 7888

microsoft ole db provider for sql server 錯誤 '8004d00a'

不能在指定的事務處理器中獲得新事務。

或者microsoft ole db provider for sql server 錯誤 '8004d00a'

新事務不能登記到指定的事務處理器中。

我檢視了一下,這個頁面是我原先對舊系統改造的時候做的。以前別人做的 asp 程式在複雜的資料庫操作時居然沒有加事務。我用 mts 的事務功能簡單的加了事務控制。大致像下面這樣,大家都熟悉的,不再羅嗦。

做一些資料庫操作

if 某個條件 

then

objectcontext.setabort

else

objectcontext.setcomplete

endif

function ontransactionabort

response.write("transaction aborted.")

end function

function ontransactioncommit

response.write("transaction commited.")

end function

%>

為了診斷,我首先寫了乙個最簡單的頁面,其中簡單的開啟資料庫連線,然後 setcomplete. 結果發現失敗。。

然後注釋掉宣告事務處理的所有**,response.write conn.state 檢視資料庫連線的狀態。發現能正確的輸出 1, 說明連線資料庫是沒有問題的。

而我一旦加入開始那句 則會立馬重現原先的那個錯誤。

至此可以斷定是系統的 mts 服務出了問題。可是具體什麼問題呢?

google 搜尋了一堆有絲毫聯絡的文章,最終看到這個

還算有點幫助。當我照著做的時候才發現原來這個問題講得是 windows server 2003, 在 windows 2000 上不存在文中說的那個選項。

鬱悶,只好繼續搜。看了一堆不太相干的國外論壇上的帖子,最終找到了:

文中提到,如果要使用 mts 分布式事務,有乙個前提條件是兩台機器之間能夠通過 netbios 或者 dns 解析對方的機器名。而這個能否解析可以通過 ping 命令來驗證。

我立刻在 web 伺服器上執行了

ping db

結果卻不是預想的 192.168.2.5, 而是 211.99.193.150 , 乙個 internet 上的 ip 位址。

但是奇怪的是,我

ping -a 192.168.2.5 能夠正確地解析為 db

不管怎麼說,現在基本上可以判斷這就是問題的所在了。只要把那個錯誤的解析給去掉就應該可以了。

後面我修改了本機的 lmhosts 檔案強行加入一行

192.168.2.5 db 並且

ipconfig /flushdns

nbtstat -r

都執行了之後還重啟都沒用。

最終 icuc88 (

提醒我修改了 hosts 檔案。 同樣是加入這個位址對映。

然後 ping 成功解析之後,我趕緊開啟 ie, 測試一下程式,

everything is ok now !

(因為問題比較少見,暫放首頁, 希望對遇到類似問題的人有幫助)

Linux問題的故障排除過程

儘管很高興相信汽車,家庭影院系統,計算機和linux永遠不會崩潰,但實際情況是它們確實存在。在大多數情況下,我們中使用linux的人更喜歡甚至喜歡做我們自己的故障排除。解決任何型別的問題都是一門藝術和一門科學。解決諸如計算機 現的技術問題也需要大量專門知識。解決任何性質的問題的任何方法 包括計算機和...

一次難忘的面試

差不多一年半以前了,到乙個大公司面試。前面三輪都過了,到了最後乙個人來面是部門級的領導來面的。面試官面無表情,拿著我的簡歷反覆看,偶爾抬一下眼皮看看我,再看簡歷。他有三分鐘沒有說話,然後我有些不自在起來。他也沒要我做自我介紹,隨便聊了幾句後就告訴我 7500,我表示接受不了。下面他開始表演了 你現在...

難忘的一次海濱遊玩

每年的寒暑假,爸爸媽媽都會抽時間帶我到一些非常有趣的地方遊玩。今年暑假結束後,我就要上六年級,也許玩的機會不會太多了。我特別期待這次暑假遊玩的到來。左盼右盼,終於到了出發的那一天。我六點半被鬧鐘叫起來,忙跑去爸爸媽媽房間,打算叫醒他們,沒想到他們已經收拾好東西,在那兒等著我了。急急忙忙洗漱,胡亂扒了...