成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SQL Server 2008數(shù)據(jù)庫(kù)變更跟蹤詳解

數(shù)據(jù)庫(kù) SQL Server
本文我們主要介紹了SQL Server 2008數(shù)據(jù)庫(kù)變更跟蹤的相關(guān)知識(shí),希望本次的介紹能夠?qū)δ兴鶐椭?/div>

SQL Server 2008數(shù)據(jù)庫(kù)變更跟蹤的相關(guān)知識(shí)是本文我們主要要介紹的內(nèi)容,本文我們主要介紹了怎樣在數(shù)據(jù)庫(kù)、表上激活變更跟蹤,以及怎樣打開(kāi)各種選項(xiàng),例如AUTO_CLEANUP、TRACK_COLUMNS_UPDATED,一些應(yīng)用程序是設(shè)計(jì)成將數(shù)據(jù)從一個(gè)中央數(shù)據(jù)庫(kù)拿到一個(gè)本地緩存中,舉例來(lái)說(shuō),到處奔走的銷(xiāo)售人員只是偶爾連接到中央數(shù)據(jù)庫(kù)來(lái)獲取最新的庫(kù)存量數(shù)據(jù)。或者業(yè)務(wù)邏輯的重型處理是從產(chǎn)品數(shù)據(jù)庫(kù)服務(wù)器上脫機(jī)下載下來(lái)的,本地進(jìn)行處理然后發(fā)送回產(chǎn)品數(shù)據(jù)庫(kù)。這些應(yīng)用程序需要某種方法來(lái)跟蹤數(shù)據(jù)變更,以便知道什么數(shù)據(jù)被改變了。

在SQL Server 2008之前,應(yīng)用程序開(kāi)發(fā)人員需要使用觸發(fā)器或時(shí)間戳字段來(lái)實(shí)現(xiàn)定制跟蹤解決方案,并創(chuàng)建額外的表以便跟蹤數(shù)據(jù)變更。而我們都知道,觸發(fā)器是很昂貴的。DML操作中所涉及的每個(gè)表通過(guò)一個(gè)用于觸發(fā)器展示的內(nèi)部函數(shù)遞歸檢查。此外,因?yàn)橛|發(fā)器是作為啟動(dòng)它們的事務(wù)的一部分來(lái)執(zhí)行的,導(dǎo)致它們需要更長(zhǎng)的時(shí)間來(lái)提交,而且引起負(fù)載的鎖問(wèn)題。SQL Server 2008提供了一個(gè)新特性,變更跟蹤。

變更跟蹤對(duì)于建立單向和雙向的同步應(yīng)用程序來(lái)說(shuō)是很好的,它被設(shè)計(jì)為使用用于ADO.NET的Sync Services。應(yīng)用程序開(kāi)發(fā)人員可以使用變更跟蹤來(lái)同步SQL Server數(shù)據(jù)庫(kù)間的任何數(shù)據(jù),或甚至是在SQL Server和非SQL Server數(shù)據(jù)庫(kù)之間。與復(fù)制相比,變更跟蹤更適合于開(kāi)發(fā)人員而不是數(shù)據(jù)庫(kù)管理員,因?yàn)樗峁┙o開(kāi)發(fā)人員一個(gè)靈活的基礎(chǔ)來(lái)使用.NET建立同步應(yīng)用程序,但是它缺乏存儲(chǔ)過(guò)程的支持或內(nèi)置的監(jiān)控工具,比如Replication Monitor。

在一個(gè)已有的表上激活變更跟蹤并不需要對(duì)表結(jié)構(gòu)進(jìn)行任何改變。唯一的要求是這個(gè)表必須已有一個(gè)主鍵。變更跟蹤信息同步地在事務(wù)提交時(shí)進(jìn)行了記錄,所以它展示的DML操作順序是正確的。盡管變更跟蹤是和事務(wù)同步執(zhí)行的,但是它的執(zhí)行成本和觸發(fā)器相比是非常高的。此外,它只捕捉變更記錄主鍵字段的值,并在變更跟蹤表中記錄這些值。這些值會(huì)被連接到基礎(chǔ)表以獲得變更的數(shù)據(jù)。與變更數(shù)據(jù)捕獲相比,它的存儲(chǔ)成本要低,因?yàn)樵谧兏櫛碇胁徊东@非主鍵字段。但是,因?yàn)閷?duì)數(shù)據(jù)記錄來(lái)說(shuō),能夠被查詢(xún)的只是凈變化,而不是中間的變化,變更跟蹤不適合于審計(jì)。

對(duì)數(shù)據(jù)庫(kù)AdventureWorks2008中的表HumanResources.Department建立變更跟蹤以及怎樣查詢(xún)變更的數(shù)據(jù)。在你對(duì)表激活變更跟蹤之前,你需要對(duì)這個(gè)數(shù)據(jù)庫(kù)激活變更跟蹤。執(zhí)行下面的命令在數(shù)據(jù)庫(kù)AdventureWorks2008上激活變更跟蹤。

  1. ALTER DATABASE AdventureWorks2008  
  2. SET CHANGE_TRACKING = ON   
  3. (AUTO_CLEANUP=ONCHANGE_RETENTION=8 hours)   
  4. GO  

 

當(dāng)這個(gè)命令運(yùn)行時(shí),當(dāng)AUTO_CLEANUP選項(xiàng)設(shè)置為打開(kāi)時(shí),它還激活變更跟蹤信息的自動(dòng)清理。保留時(shí)間設(shè)置為至少8小時(shí)。每30分鐘會(huì)有一個(gè)內(nèi)部任務(wù)運(yùn)行一次來(lái)刪除舊的事務(wù)。SQL Server 也將使用事務(wù)信息填充到一個(gè)內(nèi)部系統(tǒng)表sys.syscommittab中去。這個(gè)表將對(duì)每個(gè)引起數(shù)據(jù)庫(kù)中跟蹤表上數(shù)據(jù)修改的事務(wù)具有一條記錄。盡管這個(gè)表不能在非DAC連接中查看到,但是這個(gè)表中的信息是通過(guò)一個(gè)DMV——sys.dm_tran_commit_table ——暴露的。下面是這個(gè)DMV中的字段。

commit_ts:一個(gè)遞增的數(shù)字,它是作為用于每個(gè)提交的事務(wù)的一個(gè)數(shù)據(jù)庫(kù)特定的時(shí)間戳。

xdes_id:一個(gè)用于事務(wù)的數(shù)據(jù)庫(kù)特定的內(nèi)部ID。

commit_lbn:日志塊的數(shù)目,它包含事務(wù)的提交日志記錄。

commit_csn:事務(wù)的實(shí)例特定的提交順序數(shù)字。

commit_time:事務(wù)提交的時(shí)間。

如果你在這個(gè)數(shù)據(jù)庫(kù)上從沒(méi)激活過(guò)變更跟蹤,那么這個(gè)DMV是空的。

1.select * from sys.dm_tran_commit_table 要在表HumanResources.Department上激活變更跟蹤,那么運(yùn)行下面的命令。

1.ALTER TABLE HumanResources.Department 2. 3.ENABLE CHANGE_TRACKING 4. 5.GO 這個(gè)命令創(chuàng)建一個(gè)內(nèi)部表,它被用來(lái)記錄對(duì)表HumanResources.Department所做的變更。這個(gè)表的名稱(chēng)是change_tracking_[tableObjectID]。因?yàn)樗且粋€(gè)內(nèi)部表,所以它只能在DAC連接中查看。在我們的例子中,表HumanResources.Department的對(duì)象ID是757577737,因此這個(gè)表的名稱(chēng)是“change_tracking_757577737”。這個(gè)表如下所示是空的,這是因?yàn)槲覀儧](méi)有對(duì)表HumanResources.Department做任何修改,下面是這個(gè)表的字段。

sys_change_xdes_id:修改記錄的事務(wù)的事務(wù)ID。

sys_change_xdes_id_seq:事務(wù)中操作的順序標(biāo)識(shí)。

sys_change_operation:影響記錄的操作類(lèi)型:插入、更新或刪除。

sys_change_columns:修改了的字段的列表(用于更新,只有當(dāng)字段跟蹤被激活時(shí))。

sys_change_context:在DML操作過(guò)程中使用WITH CHANGE_ TRACKING_CONTEXT選項(xiàng)所提供的應(yīng)用程序特定的上下文信息。

k_[name]_[ord]:從目標(biāo)表獲得的主鍵字段。[name]是主鍵字段的名稱(chēng),[ord]是主鍵中的順序位置,而[type]是這個(gè)字段的數(shù)據(jù)類(lèi)型。

因?yàn)楸鞨umanResources.Department在主鍵上只有一個(gè)字段——DepartmentID,所以在變更跟蹤表中只有一個(gè)主鍵字段k_DepartmentID_00000001。sys_change_columns字段可以被用來(lái)跟蹤對(duì)于每個(gè)更新操作哪些字段被修改了。(插入和刪除語(yǔ)句總是改變所有的字段,所以這個(gè)字段對(duì)于插入和刪除總是NULL)。通過(guò)在這個(gè)表上激活字段跟蹤,你可以獲得只從這些更新了的字段而來(lái)的數(shù)據(jù)。這將限制返回和通過(guò)網(wǎng)絡(luò)轉(zhuǎn)移的數(shù)據(jù)的數(shù)量。這還將更有效地合并增加數(shù)據(jù)的變更,因?yàn)榇笠?guī)模字段——例如varbinary(max)和xml——只在它們被更新了才返回。要激活字段跟蹤,設(shè)置TRACK_COLUMNS_UPDATED選項(xiàng)。

  1. ALTER TABLE HumanResources.Department   
  2. ENABLE CHANGE_TRACKING   
  3. WITH (TRACK_COLUMNS_UPDATED = ON

 

你還會(huì)使用sys_change_context字段來(lái)跟蹤表發(fā)生變更的上下文。這個(gè)上下文是由生成DML語(yǔ)句的客戶(hù)端提供的。它可以是一個(gè)常量,例如一個(gè)應(yīng)用ID。一個(gè)示例更新語(yǔ)句如下所示。

  1. DECLARE @originator_id varbinary(128)   
  2. SET @originator_id = CAST('MyApplication' AS varbinary(128))   
  3. WITH CHANGE_TRACKING_CONTEXT (@originator_id)   
  4. UPDATE HumanResources.Department   
  5. SET GroupName='Accounting'   
  6. WHERE DepartmentID=10  

 

如果你想關(guān)閉數(shù)據(jù)庫(kù)上的變更跟蹤,那么你需要首先關(guān)閉這個(gè)數(shù)據(jù)庫(kù)中所有表的變更跟蹤。你可以從sys.change_tracking_tables目錄視圖中查找這樣表的列表。下面是一個(gè)生成所有ALTER TABLE語(yǔ)句的簡(jiǎn)單SQL語(yǔ)句。

  1. SELECT 'ALTER TABLE ' + object_name(object_id) + ' DISABLE CHANGE_TRACKING;'   
  2. FROM sys.change_tracking_tables  

 

在你關(guān)閉了表的變更跟蹤之后,運(yùn)行下面的命令來(lái)關(guān)閉數(shù)據(jù)庫(kù)的變更跟蹤。

  1. ALTER DATABASE AdventureWorks2008 SET CHANGE_TRACKING = OFF 

 

關(guān)于SQL Server 2008數(shù)據(jù)庫(kù)變更跟蹤的相關(guān)知識(shí)就介紹到這里了,希望本次的介紹能夠?qū)δ兴斋@!

【編輯推薦】

  1. SQL Server數(shù)據(jù)庫(kù)字段說(shuō)明的添加修改刪除示例
  2. SQL Server數(shù)據(jù)庫(kù)服務(wù)器負(fù)載均衡集群的實(shí)現(xiàn)方法
  3. 初學(xué)Java調(diào)用存儲(chǔ)過(guò)程返回一行或多行結(jié)果集的實(shí)例
  4. 使用LLServer實(shí)現(xiàn)對(duì)leveldb的訪問(wèn)封裝的C#客戶(hù)端源碼
  5. SQL Server數(shù)據(jù)庫(kù)解決Performance Dashboard溢出問(wèn)題
責(zé)任編輯:趙鵬 來(lái)源: 百度空間
相關(guān)推薦

2010-03-23 09:52:23

SQL Server

2012-04-13 13:26:30

SQL Server

2010-12-17 09:11:41

SQL Server

2009-03-19 09:30:59

2011-08-11 14:23:57

SQL Server 索引分區(qū)

2021-03-18 08:20:19

SQLServer數(shù)據(jù)庫(kù)SQL

2010-08-27 09:59:51

SQL Server

2011-09-07 15:11:31

SQL Server同步

2011-08-09 17:24:21

SQL Server 數(shù)據(jù)庫(kù)日志

2011-08-16 18:11:13

SQL Server 手動(dòng)提交

2009-04-10 15:37:48

SQL Server2鏡像實(shí)施

2010-07-15 17:28:50

SQL Server

2010-03-16 10:12:40

SQL Server

2011-08-11 09:12:31

SQL Server nolock

2010-05-13 10:00:10

SQL Server

2013-05-08 10:01:55

SQL Server 數(shù)據(jù)備份備份與還原

2011-07-25 12:56:44

SSMAOracle數(shù)據(jù)庫(kù)SQL Server

2017-03-15 16:45:02

SQL Server 數(shù)據(jù)庫(kù)分配用戶(hù)

2010-07-16 10:29:02

SQL Server

2010-07-06 13:22:13

SQL Server
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产精品视频免费观看 | 人人干在线视频 | h视频在线免费 | a级性视频 | 国产精品福利视频 | 福利一区二区在线 | 最新国产精品精品视频 | 久久尤物免费一区二区三区 | 国产精品区二区三区日本 | 亚洲网站在线 | 国产伦一区二区三区 | 国产成人精品一区二区三区视频 | 欧美日本一区 | 久久丝袜| 九九热免费在线观看 | 在线一区| 国产高清精品一区二区三区 | 日韩精品a在线观看图片 | www中文字幕| 久久久久久久国产 | 免费一区二区三区 | 一区二区亚洲 | 亚洲国产精品第一区二区 | 久久尤物免费一区二区三区 | 国产欧美日韩一区 | 911网站大全在线观看 | 国产精品区二区三区日本 | 91精品国产综合久久久久 | h视频在线播放 | 成人亚洲| 欧美性网站 | 九九久久精品 | 成人午夜免费视频 | 中文字幕国产精品 | 欧美综合在线观看 | 欧美啊v在线观看 | 男女免费在线观看视频 | 91一区二区三区 | www日韩 | 正在播放国产精品 | av入口 |