Sqlserver2000中的交易處理

來源:互聯網
上載者:User
server|sqlserver|交易處理 Sqlserver2000中的交易處理 一、       定義及其性質:事務:事務是作為單個邏輯工作單元執行的一系列操作。屬性:一個邏輯工作單元必須有四個屬性,稱為 ACID(原子性、一致性、隔離性和持久性)屬性,只有這樣才能成為一個事務:1.      原子性:事務必須是原子工作單元;對於其資料修改,要麼全都執行,要麼全都不執行。2.      一致性:事務在完成時,必須使所有的資料都保持一致狀態。在相關資料庫中,所有規則都必須應用於事務的修改,以保持所有資料的完整性。事務結束時,所有的內部資料結構(如 B 樹索引或雙向鏈表)都必須是正確的。3.      隔離性:由並發事務所作的修改必須與任何其它並發事務所作的修改隔離。事務查看資料時資料所處的狀態,要麼是另一併發事務修改它之前的狀態,要麼是另一事務修改它之後的狀態,事務不會查看中間狀態的資料。這稱為可串列性,因為它能夠重新裝載起始資料,並且重播一系列事務,以使資料結束時的狀態與原始事務執行的狀態相同。4.      持久性:事務完成之後,它對於系統的影響是永久性的。該修改即使出現系統故障也將一直保持。二、指定和強制交易處理SQL 程式員要負責啟動和結束事務,同時強制保持資料的邏輯一致性。程式員必須定義資料修改的順序,使資料相對於其組織的商務規則保持一致。然後,程式員將這些修改語句包括到一個事務中,使 Microsoft? SQL Server? 能夠強制該事務的物理完整性。企業資料庫系統(如 SQL Server)有責任提供一種機制,保證每個事務物理的完整性。SQL Server 提供: 鎖定裝置,使事務相互隔離。 記錄裝置,保證事務的持久性。即使伺服器硬體、作業系統或 SQL Server 自身出現故障,SQL Server 也可以在重新啟動時使用交易記錄,將所有未完成的事務自動地復原到系統出現故障的位置。交易管理特性,強制保持事務的原子性和一致性。事務啟動之後,就必須成功完成,否則 SQL Server 將撤消該事務啟動之後對資料所作的所有修改。三、控制事務:
應用程式主要通過指定事務啟動和結束的時間來控制事務。這可以使用 Transact-SQL 陳述式或資料庫 API 函數。系統還必須能夠正確處理那些在事務完成之前便終止事務的錯誤。事務是在串連層進行管理。當事務在一個串連上啟動時,在該串連上執行的所有的 Transact-SQL 陳述式在該事務結束之前都是該事務的一部分。
1、啟動事務
在 Microsoft® SQL Server™ 中,可以按顯式自動認可或隱性模式啟動事務。

1)      明確交易:通過發出 BEGIN TRANSACTION 語句顯式啟動事務。

2)      自動認可事務:這是 SQL Server 的預設模式。每個單獨的 Transact-SQL 陳述式都在其完成後提交。不必指定任何語句控制事務。

3)      隱性事務:通過 API 函數或 Transact-SQL SET IMPLICIT_TRANSACTIONS ON 語句,將隱性事務模式設定為開啟。下一個語句自動啟動一個新事務。當該事務完成時,再下一個 Transact-SQL 陳述式又將啟動一個新事務。

4)      串連模式在串連層進行管理。如果一個串連從一種事務模式改變到另一種,那麼它對任何其它串連的事務模式沒有影響。
2、結束事務
可以使用 COMMIT 或 ROLLBACK 語句結束事務。

1)      COMMIT:如果事務成功,則提交。COMMIT 語句保證事務的所有修改在資料庫中都永久有效。COMMIT 語句還釋放資源,如事務使用的鎖。

2)      ROLLBACK:如果事務中出現錯誤,或者使用者決定取消事務,可復原該事務。ROLLBACK 語句通過將資料返回到它在事務開始時所處的狀態,來恢複在該事務中所作的所有修改。ROLLBACK 還會釋放由事務佔用的資源。
3、指定事務邊界
可以用 Transact-SQL 陳述式或 API 函數和方法確定 SQL Server 事務啟動和結束的時間。

1)      Transact-SQL 陳述式:使用 BEGIN TRANSACTION、COMMIT TRANSACTION、COMMIT WORK、ROLLBACK TRANSACTION、ROLLBACK WORK 和 SET IMPLICIT_TRANSACTIONS 語句來描述事務。這些語句主要在 DB-Library 應用程式和 Transact-SQL 指令碼(如使用 osql 命令提示工具 + 生產力啟動並執行指令碼)中使用。

2)      API 函數和方法:資料庫 API(如 ODBC、OLE DB 和 ADO)包含用來描述事務的函數和方法。它們是 SQL Server 應用程式中用來控制事務的主要機制。

3)      每個事務都必須只由其中的一種方法管理。在同一事務中使用兩種方法可能導致不確定的結果。例如,不應先使用 ODBC API 函數啟動一個事務,再使用 Transact-SQL COMMIT 陳述式完成該事務。這樣將無法通知 SQL Server ODBC 驅動程式該事務已被提交。在這種情況下,應使用 ODBC SQLEndTran 函數結束該事務。
4、交易處理過程中的錯誤
1)      如果伺服器錯誤使事務無法成功完成,SQL Server 將自動復原該事務,並釋放該事務佔用的所有資源。如果用戶端與 SQL Server 的網路連接中斷了,那麼當網路告知 SQL Server 該中斷時,將復原該串連的所有未完成事務。如果用戶端應用程式失敗或客戶電腦崩潰或重啟,也會中斷該串連,而且當網路告知 SQL Server 該中斷時,也會復原所有未完成的串連。如果客戶從該應用程式登出,所有未完成的事務也會被復原。

2)      如果批處理中出現運行時語句錯誤(如違反約束),那麼 SQL Server 中預設的行為將是只復原產生該錯誤的語句。可以使用 SET XACT_ABORT 語句改變該行為。在 SET XACT_ABORT ON 語句執行之後,任何運行時語句錯誤都將導致當前事務自動復原。編譯錯誤(如語法錯誤)不受 SET XACT_ABORT 的影響。

3)     如果出現執行階段錯誤或編譯錯誤,那麼程式員應該編寫應用程式代碼以便指定正確的操作(COMMIT 或 ROLLBACK)。
                                                 參考<<sqlserver2000協助檔案>>


相關文章

Cloud Intelligence Leading the Digital Future

Alibaba Cloud ACtivate Online Conference, Nov. 20th & 21st, 2019 (UTC+08)

Register Now >

Starter Package

SSD Cloud server and data transfer for only $2.50 a month

Get Started >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。