什么是SQL Server 分布式事務以及包含了什么?
以下的文章主要介紹的是SQL Server 分布式事務的概念,以及對SQL Server 分布式事務所包括的項目描述,我們大家都知道SQL Server 數(shù)據(jù)庫的分布式事務主要是涉及來自兩個或多個源的資源的事務。
Microsoft® SQL Server™ 2000 支持分布式事務,使用戶得以創(chuàng)建事務來更新多個 SQL Server 數(shù)據(jù)庫和其它數(shù)據(jù)源。
分布式事務包括:
資源管理器
控制分布式事務所涉及的每個資源的軟件稱為資源管理器。SQL Server 分布式事務由各個資源管理器內(nèi)的本地事務組成。每個資源管理器必須能夠與分布式事務內(nèi)的所有其它資源管理器相協(xié)調(diào),以提交或回滾自己的本地事務。SQL Server 可以作為分布式事務內(nèi)的資源管理器工作,并遵從用于分布式事務處理的 X/Open XA 規(guī)范。
事務管理器
提交或回滾分布式事務由稱為事務管理器的軟件組件控制。事務管理器與每個資源管理器相協(xié)調(diào),確保一起提交或回滾所有組成分布式事務的本地事務。Microsoft 分布式事務處理協(xié)調(diào)器 (MS DTC) 服務如事務管理器一樣工作。MS DTC 遵從用于分布式事務處理的 X/Open XA 規(guī)范。
兩階段提交 (2PC)
需要進行特殊的提交處理,以防止在管理跨越多個資源管理器的事務時出現(xiàn)問題。當刷新日志緩沖區(qū)使其可用時,提交大事務可能需要相對較長的時間。提交進程本身還可能遇到錯誤,需要強行回滾。
如果事務管理器只是請求每個資源管理器提交,則可能從一些資源管理器返回成功狀態(tài),然后從某個資源管理器得到錯誤信息。這會導致沖突,因為所有SQL Server 分布式事務都應回滾,而部分事務已提交。兩階段提交通過將提交分成兩相可以解決此問題:
準備
事務管理器給每個資源管理器發(fā)送一個準備提交的請求。然后,每個資源管理器執(zhí)行完成提交進程所需的所有大量占用資源的操作,如刷新所有日志緩沖區(qū)。資源管理器只保留維護事務完整性所需的最少的鎖,然后給事務管理器返回成功狀態(tài)。
提交
如果所有資源管理對發(fā)給它們的準備請求返回成功狀態(tài),事務管理器將給每個資源管理器發(fā)送提交命令。然后,每個資源管理器快速將事務記錄為已完成,并釋放上次控制的資源。如果有任何資源管理器對準備請求返回錯誤信息,事務管理器將給每個資源管理器發(fā)送回滾命令。
有幾種方法可以使應用程序在分布式事務內(nèi)包括 SQL Server 2000:
如果應用程序有本地事務并且發(fā)出分布式查詢,本地事務將升級到分布式事務。
發(fā)出 BEGIN DISTRIBUTED TRANSACTION 語句。
如果應用程序有本地事務并且將 REMOTE_PROC_TRANSACTIONS 選項設置為>
使用用于 SQL Server 的 OLE DB 提供程序或 SQL Server ODBC 驅(qū)動程序的應用程序,可以使用 OLE DB 方法或 ODBC 函數(shù)讓 SQL Server 連接聯(lián)接由應用程序啟動的SQL Server 分布式事務。
SQL server對全文目錄執(zhí)行調(diào)查和清除任務敬業(yè)的IT人 2008-2-27 22:25:00 在本示例中,將執(zhí)行典型的調(diào)查和清除任務。假設您已連接到 pubs 數(shù)據(jù)庫,全文服務已經(jīng)啟動,并且正在處理虛構(gòu)的 writers 表和 books 表。
1.通過執(zhí)行下列存儲過程,以獲取一份已鏈接到 pubs 數(shù)據(jù)庫的所有全文目錄的列表:
- sp_help_fulltext_catalogs
 
因為 pubs 數(shù)據(jù)庫是當前數(shù)據(jù)庫,該存儲過程將為鏈接到 pubs 數(shù)據(jù)庫的所有全文目錄返回下列元數(shù)據(jù):
全文目錄的名稱和整數(shù)標識符
全文目錄根目錄
全文目錄填充狀態(tài)
鏈接到此全文目錄的表的數(shù)目
與上述存儲過程稍有不同的另一個存儲過程(在其中指定了全文目錄的名稱參數(shù))可以為單個全文目錄返回這方面的信息。
2.執(zhí)行下列存儲過程,以獲取一份已為全文處理而啟用的數(shù)據(jù)庫中所有表的列表:
- sp_help_fulltext_tables
 
此存儲過程為每個表返回下列元數(shù)據(jù):
由兩部分組成的表名
用作表的全文鍵的列的整數(shù)標識符
用于對全文鍵列施加***約束的索引的名稱
表的全文狀態(tài)
表的全文目錄名
支持與此存儲過程稍有不同的其它兩種存儲過程。如果指定了 fulltext_catalog_name 參數(shù),將為與該全文目錄鏈接的所有表返回這方面的信息。如果同時指定了 catalog_name 參數(shù)和 table_name 參數(shù),或者僅指定了 table_name 參數(shù),則為該表返回這些信息。
3.執(zhí)行下列存儲過程,以獲取一份已為全文處理而啟用的數(shù)據(jù)庫中所有表的列表:
- sp_help_fulltext_columns
 
此存儲過程將為每個列返回下列元數(shù)據(jù):
列中由兩部分組成的表名
列的名稱和整數(shù)標識符
與此存儲過程稍有不同的一種存儲過程(在其中指定了表名參數(shù))可以為單個表返回這方面的信息。
經(jīng)過編譯的列表會指出一些問題。除 mytable 表外不再有任何表使用 mycatalog 全文目錄,而 mytable 表不再有任何可被查詢的全文列。
4.執(zhí)行下列存儲過程,以取消將 mytable 表注冊為用于全文處理:
- sp_fulltext_table 'MyTable', 'drop'
 
這將除去該表有關(guān)全文索引的元數(shù)據(jù)。直至下一次完全填充或除去全文目錄之前,現(xiàn)有的全文索引將保持原樣。但它也保持為不使用狀態(tài)。有關(guān)更多信息,請參見 sp_fulltext_table。
5.通過執(zhí)行下列存儲過程,從文件系統(tǒng)中除去 mycatalog 全文目錄并從系統(tǒng)表中除去其元數(shù)據(jù):
- sp_fulltext_catalog 'MyCatalogue', 'drop'
 
必須完成步驟 4 才能除去全文目錄,因為必須更新其文本目錄的元數(shù)據(jù)才能刪除所有全文索引。
在文件系統(tǒng)中至少存在一個不再有相應的 SQL Server 元數(shù)據(jù)的全文目錄。這種現(xiàn)象的原因通常是因為刪除了某個數(shù)據(jù)庫。
6.通過執(zhí)行下列存儲過程,從文件系統(tǒng)中刪除所有在 SQL Server 中不再有元數(shù)據(jù)的全文目錄:
- sp_fulltext_service 'Clean_Up'
 
MixedUpCtlg 全文目錄的結(jié)構(gòu)與當前在 SQL Server 中為它記錄的元數(shù)據(jù)不匹配。當全文目錄正在被除去,或者數(shù)據(jù)庫正在被除去并且 Microsoft 搜索服務不在運行時,就可能發(fā)生這種情況。除去操作會更改與全文目錄相關(guān)的元數(shù)據(jù),但無法完成該操作,因為 Microsoft 搜索服務沒有運行。
這將導致 SQL Server 中的全文元數(shù)據(jù)與文件系統(tǒng)中相關(guān)的物理全文目錄之間不一致。通過喚醒調(diào)用 sp_fulltext_service 上的清除操作可以糾正這種不一致。(Microsoft 搜索服務必須正在運行。)
7.執(zhí)行下列存儲過程,以重建(但不重新填充)MixedUpCtlg 全文目錄:
- sp_fulltext_catalog 'MixedUpCtlg', 'Rebuild'
 
帶有 ENABLE 選項的 sp_fulltext_database 存儲過程可以用于重建所有已知的全文目錄。
8.執(zhí)行下列存儲過程,以啟動對 MixedUpCtlg 全文目錄的完全填充:
- sp_fulltext_catalog 'MixedUpCtlg', 'start_full'
 
上述的相關(guān)內(nèi)容就是對SQL Server 分布式事務的概念的描述,希望會給你帶來一些幫助在此方面。
【編輯推薦】















 
 
 




 
 
 
 