亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > SQL Server > 正文

SQL點滴8—SQL Server中的事務處理以及SSIS中的內建事務

2024-08-31 00:53:40
字體:
來源:轉載
供稿:網友

我們可以把SSIS中的整個package包含在一個事務中,但是如果在package的執行過程中有一個表需要鎖定應該怎么處理呢?SSIS內建的事務處理可以解決這個問題。在此之前首先來熟悉一下SQL Server中的事務的概念。

事務

SQL Server中的事務是單個的工作單元。如果某一事務成功,則在該事務中進行的所有數據修改均會提交,成為數據庫中永久的組成部分。如果事務遇到錯誤且必須取消或回滾,則所有的數據修改均被清除。

在SQL Server中使用事務有可能會造成一些預想不到的結果,具體來說有臟讀,不可重復讀和幻讀三種結果。

  • 臟讀:臟讀是指當一個事務正在訪問數據庫,并且對數據進行修改,而這種修改還沒有提交到數據庫中,另外一個事務也在訪問這個數據,然后使用了這個數據。
  • 不可重復讀:在一個事物內多次讀同一數據。在這個事務還沒有結束時,另外一個事物也在訪問該同一數據,那么在第一個事務兩次讀取之間,由于第二個事務的修改,第一個事務兩次讀取到的數據可能不一樣。這樣就發生了在一個事務內兩次讀取到的數據不一樣,因此稱為不可重復讀。
  • 幻讀:幻讀是指當事務不是獨立執行時發生的一種現象,例如第一個事務對一個表中的數據進行修改,這種修改設計到表中的全部數據行。同時第二個事務也修改這個表中的數據,這個修改時向同一個表中插入一行新數據,這樣第一個事務的用戶發現還有一條數據沒有修改,像發生了幻覺一樣,因此稱為幻讀

在SQL Server中給事務指定一個隔離級別,這個隔離級別定義該事務與其他事務進行資源或數據更改相隔離的級別。事務隔離級別決定了是否鎖定SQL Server對象,下面是SQL Server中的事務隔離級別。

  • Rdad Uncommitted: 讀取數據不需要等待解鎖,這種方式會讀到臟數據,因為讀取的數據有可能是還沒有更新的數據。這種隔離級別最低,會造成臟讀,不可重復讀和幻讀的結果,并發性最高。
  • Read Committed: 讀取數據需要等待解鎖,這樣會讀取到最新的被更新的數據。Read Committed不會造成臟讀的問題,但是會造成不可重復的和幻讀的問題。Read Committed是SQL Server的默認設置。
  • Repeatable Read: 與Read Committed類似,它會鎖定所讀取的所有行,但是沒有其他的連接可以更新或插入數據,這樣如果select語句可能選擇到這條新跟新或插入的數據,這條數據記錄是不會出現在select結果中的。同時被選擇出的數據也不能被其他連接更改,直到讀取動作執行結束或者回滾結束。這種隔離級別不會造成臟讀和不可重復讀,但是會造成幻讀。
  • Serializable:和Repeatable Read類似,不過沒有其他的連接可以插入或更新數據,同時如果在下次查詢中任然使用這種事務隔離級別,你會得到相同的查詢結果,就是說更新或新插入的數據任然不會出現在查詢結果中。這種隔離級別不會造成臟讀,不可重復讀或幻讀。

還有兩種是SQL Server 2005中新添加的事務隔離級別

  • 一種Read Committed級別的變異,當你把數據庫的隔離級別設置成READ_COMMITTED_SNAPHOT,任何使用Read Committed級別的的事務不再需要鎖定數據對象。執行語句時會得到select語句開始執行之時會得到所有最新的結果。
  • SNAPSHOT:一種全新的級別SNAPSHOT,當你在任何數據庫對象中設置事務的隔離級別為ALLOW_SNAPSHOT_ISOLATION時,其他事務都不會遇到共享鎖,查詢結果會得到所有更新之后的行。這種隔離級別不會造成臟讀,不可更新讀和幻讀的結果

 所有上述的事務處理都在tempdb數據庫中一個類似版本庫的數據對象中自動進行,當遇到更新未被提交的情況,數據引擎會檢索這個版本庫得到合適的提交結果。維護這個版本庫的工作由SQL Server自動進行,不需要人為干預。

  

SSIS中的事務處理

SSIS中的包,容器(例如Loop,Foreach Loop,Sequence)或者一個單獨的任務中都可以設置事務處理選項。事務處理選項有下面一些值               

  • Required-如有事務則添加,否則新添加一個
  • Supported-如有有事務添加一個,沒有則不添加,這是默認選項+
  • NotSupported-不添加事務處理

內建的事務處理要使用Distributed Transaction Coordinator(MSDTC)服務,這個服務必須開啟。MSDTC允許使用分布式事務處理,例如在一個事務中同時處理SQL Server數據庫和Oracle數據庫。如果沒有開啟這個服務會得到下面的錯誤提示.

Error: 0xC001401A at Transaction: The SSIS Runtime has failed to start the distributed transaction due to error 0x8004D01B "The Transaction Manager is not available.". The DTC transaction failed to start. This could occur because the MSDTC Service is not running.

注意SSIS中包中的元素的事務隔離級別是Serializable,這種級別會影響鎖的持續時間。下面我們來用一個例子說明在如何package中鎖定一個表

  1. 新建一個SequenceContainer,命名為Test Initialization。
  2. 這個SequenceContainer主要用來創建測試的環境,創建連個表TranQueue,TranQueueHistory,向第一個表中添加一條記錄,這樣模擬一個事物處理  過程。我們只是使用這個SequenceContainer來創建測試環境,所以設置它的TransactionOption選項為NotSupported在這個SequenceContainer中依次添加三個Execute SQL,依次他們的設置如下 
    1/*命名*/
    2Create TranQueue Table
    3/*SQLstatement設置*/
    4IF NOT EXISTS ( SELECT * FROM sys.objects WHERE object_id =
    5
    6OBJECT_ID(N'dbo.TranQueue') AND type in (N'U') )
    7BEGIN
    8execute('CREATE TABLE dbo.TranQueue(message nvarchar(256))')
    9END
    10/*命名*/
    11Populate TranQueue
    12/*SQLstatement設置*/
    13INSERT INTO dbo.TranQueue VALUES ('Test Message' + CONVERT
    14
    15(NVARCHAR(23), GETDATE(), 121))
    16/*命名*/
    17Create TranQueueHistory table
    18/*SQLstatement設置*/
    19IF NOT EXISTS ( SELECT * FROM sys.objects WHERE object_id =
    20
    21OBJECT_ID(N'dbo.TranQueueHistory') AND type in (N'U') )
    22BEGIN
    23execute('CREATE TABLE dbo.TranQueueHistory(message nvarchar(256))')
    24END
    發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久中精品2020中文| 欧美视频第一页| 亚洲精品视频网上网址在线观看| 中文字幕亚洲综合| 欧美疯狂做受xxxx高潮| 米奇精品一区二区三区在线观看| 最近2019年手机中文字幕| 欧美日韩裸体免费视频| 久久艳片www.17c.com| 亚洲一区二区三区毛片| 91精品国产99久久久久久| www.久久色.com| 亚洲三级黄色在线观看| 欧美一区视频在线| 97国产suv精品一区二区62| 亚洲欧美国产精品专区久久| 97香蕉超级碰碰久久免费的优势| 久久精品中文字幕免费mv| 国产精品久久久久77777| 按摩亚洲人久久| 欧美二区在线播放| 一区二区av在线| 欧美成人亚洲成人日韩成人| 7m精品福利视频导航| 欧美限制级电影在线观看| 欧美日韩亚洲系列| 国产美女精品免费电影| 久久亚洲精品一区二区| 久久久亚洲天堂| 国产视频久久久| 日本亚洲精品在线观看| 国产精品视频网| 91免费的视频在线播放| 成人av在线网址| 成人黄色免费网站在线观看| 日韩av免费网站| 另类天堂视频在线观看| 亚洲欧美在线看| 欧美一级在线亚洲天堂| 中文欧美日本在线资源| 欧美日韩人人澡狠狠躁视频| 日韩av在线免费| 中文字幕亚洲第一| 成人网页在线免费观看| 国产精品露脸av在线| 亚洲精品短视频| 日日狠狠久久偷偷四色综合免费| 精品偷拍一区二区三区在线看| 欧美壮男野外gaytube| 欧美精品电影免费在线观看| 欧美激情日韩图片| 日韩小视频在线| 91色琪琪电影亚洲精品久久| 亚洲福利精品在线| 欧美另类老肥妇| 亚洲天堂av女优| 亚洲精品日韩在线| 中文字幕久热精品视频在线| 欧美大片免费观看| 久久久久中文字幕2018| 91精品在线影院| 国产日韩在线亚洲字幕中文| 亚洲免费影视第一页| 久久久久北条麻妃免费看| 在线观看91久久久久久| 日韩最新中文字幕电影免费看| 在线观看日韩www视频免费| 狠狠色狠狠色综合日日小说| 国产精品一区二区电影| 欧美激情免费在线| 精品视频久久久久久久| 亚洲r级在线观看| 亚洲精品美女在线观看| 欧美乱妇高清无乱码| 欧美激情亚洲一区| 5566日本婷婷色中文字幕97| 亚洲性生活视频在线观看| 国产a∨精品一区二区三区不卡| 国产精品免费福利| 国产精品福利观看| 成人免费在线视频网站| 日本高清久久天堂| 国产精品自拍偷拍视频| 欧美三级免费观看| 亚洲欧洲偷拍精品| 在线精品国产成人综合| 欧美—级a级欧美特级ar全黄| 亚洲综合一区二区不卡| 午夜精品美女自拍福到在线| 日韩亚洲成人av在线| 三级精品视频久久久久| 九九久久久久久久久激情| 国产精品影院在线观看| 91精品国产高清久久久久久久久| 国产手机视频精品| 欧美性猛交xxxxx水多| 久久久精品一区二区| 欧美壮男野外gaytube| 欧美性猛交xxxx乱大交3| 国产日韩欧美成人| 色综合久综合久久综合久鬼88| 亚洲欧美激情另类校园| 国产精品白丝av嫩草影院| 国产成人亚洲综合青青| 国产精品久久久久久久久久久不卡| 亚洲国产精品va在线看黑人动漫| y97精品国产97久久久久久| 亚洲欧洲美洲在线综合| 精品国产精品自拍| 国产中文字幕亚洲| 亚洲人成免费电影| 久久免费国产视频| 国产伦精品一区二区三区精品视频| 成人午夜在线观看| 国产91精品青草社区| 久久国产天堂福利天堂| 亚洲精品美女在线观看播放| 91精品国产一区| 国产精品免费在线免费| 久久久人成影片一区二区三区观看| 日韩av网址在线观看| 亚洲一级片在线看| 久久99久国产精品黄毛片入口| 久久精品久久久久电影| 精品无人区乱码1区2区3区在线| 91精品久久久久久久久中文字幕| 欧美xxxx18国产| 亚洲va电影大全| 第一福利永久视频精品| 日韩中文字幕视频| 国产精品老女人精品视频| 欧美夫妻性生活视频| 国产成一区二区| 亚洲免费电影在线观看| 成人疯狂猛交xxx| 欧美第一黄色网| 97超级碰碰人国产在线观看| 情事1991在线| 日韩精品久久久久久久玫瑰园| 久久深夜福利免费观看| 色悠久久久久综合先锋影音下载| 久久精品99无色码中文字幕| 欧美日本亚洲视频| 亚洲精品一区二区久| 日韩精品在线影院| 国产精品6699| 欧洲成人在线观看| 亚洲精品综合精品自拍| 日韩在线欧美在线| 日韩av中文在线| 欧美激情亚洲综合一区| 日韩人体视频一二区| 国产精品久久久久77777| 色偷偷噜噜噜亚洲男人的天堂| 国产精品夫妻激情| 国产精品大片wwwwww| 色婷婷久久av| 亚洲片国产一区一级在线观看| 亚洲国产成人久久综合| 国产精品久久久久免费a∨| 欧美做爰性生交视频| 国产精品国产三级国产专播精品人| 国产精品av网站| 欧美激情一区二区三级高清视频|