淺談SQL Server 2008數(shù)據(jù)庫(kù)中的新數(shù)據(jù)類型_Mssql數(shù)據(jù)庫(kù)教程
推薦:解讀選擇是否恢復(fù)整個(gè)SQL Server的方法這有一個(gè)具體例子:如果你有一個(gè)單個(gè)的出現(xiàn)問(wèn)題的文件。這個(gè)文件有50MB大小,而你的整個(gè)數(shù)據(jù)庫(kù)運(yùn)行著大約有幾十億的字節(jié),這樣的話如果能恢復(fù)單個(gè)失敗文件的話就顯的非常有意義。這樣
對(duì)于關(guān)系型數(shù)據(jù)庫(kù)來(lái)說(shuō),表現(xiàn)樹(shù)狀的層次結(jié)構(gòu)始終是一個(gè)問(wèn)題。微軟在SQL Server 2005中首次嘗試了解決這個(gè)問(wèn)題,那就是被稱之為通用數(shù)據(jù)表表達(dá)式(Common Table Expressions,CTE)的實(shí)現(xiàn)方式。盡管CTE在現(xiàn)有的數(shù)據(jù)庫(kù)架構(gòu)中運(yùn)行良好,微軟找到了一種將此類層次結(jié)構(gòu)作為頭等概念來(lái)使用的方式。因此,為了實(shí)現(xiàn)這種效果,他們?cè)赟QL Server 2008中提出了一種“HierarchId”數(shù)據(jù)類型。
在傳統(tǒng)的層次結(jié)構(gòu)中,一條記錄僅僅儲(chǔ)存了一個(gè)指向它父記錄的引用,這使得一條記錄能夠獲得它在層次結(jié)構(gòu)中的相對(duì)位置,而不是絕對(duì)位置。改變某條記錄的父數(shù)據(jù)行引用是一個(gè)原子更新操作,它不會(huì)影響到該記錄的任何子記錄。
一個(gè)HierarchyId類型的字段儲(chǔ)存了記錄在層次結(jié)構(gòu)中的準(zhǔn)確位置。Denny Cherry提供了一個(gè)例子,其中展示了0x、0x58以及0x5AC0三個(gè)值,它們的字符串表現(xiàn)形式分別為“/”,“/1/”和“/1/1/”。這就引發(fā)了有關(guān)一致性和性能方面的問(wèn)題,尤其是父記錄被改變的時(shí)候。Ravi S.Maniam建議在改變父記錄操作不頻繁的情況下使用這種設(shè)計(jì)方式。
與HierarchyId類型同時(shí)出現(xiàn)的還有一系列函數(shù)。GetAncestor和GetDescendant方法可以用來(lái)遍歷樹(shù)。ToString和Parse方法用于HierarchyId類型二進(jìn)制與字符串表現(xiàn)形式之前的轉(zhuǎn)換。有些古怪的是,隨之而來(lái)的還有用于支持BinaryReader與BinaryWriter的一些方法。再來(lái)回頭看看GetDescendant,這是一個(gè)有些古怪的方法。它實(shí)際上不返回那些子記錄,而是返回那些潛在的子節(jié)點(diǎn)的位置。向樹(shù)中插入一個(gè)新的記錄時(shí),我們必需調(diào)用GetDescendant方法來(lái)獲得指定父記錄的最后一個(gè)子節(jié)點(diǎn)的位置,然后才能獲得緊跟著該位置之后的空隙。
迄今為止還沒(méi)有使用T-SQL來(lái)獲得樹(shù)狀結(jié)構(gòu)的合適示例。事實(shí)上,與它有關(guān)的所有東西都更像是一些命令,而不是基于集合的操作。
分享:淺析管理SQL Server數(shù)據(jù)庫(kù)和應(yīng)用元數(shù)據(jù)問(wèn)題 我常被問(wèn)到如何把駐留在物理服務(wù)器/SQL 實(shí)例上的數(shù)據(jù)庫(kù)轉(zhuǎn)變?yōu)樗鼈兿鄳?yīng)的應(yīng)用程序名稱。在準(zhǔn)備計(jì)劃好的服務(wù)器停機(jī)通知時(shí),這種需要就產(chǎn)生了,但在我的組織內(nèi)與IT經(jīng)理或非技術(shù)
- sql 語(yǔ)句練習(xí)與答案
- 深入C++ string.find()函數(shù)的用法總結(jié)
- SQL Server中刪除重復(fù)數(shù)據(jù)的幾個(gè)方法
- sql刪除重復(fù)數(shù)據(jù)的詳細(xì)方法
- SQL SERVER 2000安裝教程圖文詳解
- 使用sql server management studio 2008 無(wú)法查看數(shù)據(jù)庫(kù),提示 無(wú)法為該請(qǐng)求檢索數(shù)據(jù) 錯(cuò)誤916解決方法
- SQLServer日志清空語(yǔ)句(sql2000,sql2005,sql2008)
- Sql Server 2008完全卸載方法(其他版本類似)
- sql server 2008 不允許保存更改,您所做的更改要求刪除并重新創(chuàng)建以下表
- SQL Server 2008 清空刪除日志文件(瞬間日志變幾M)
- Win7系統(tǒng)安裝MySQL5.5.21圖解教程
- 將DataTable作為存儲(chǔ)過(guò)程參數(shù)的用法實(shí)例詳解
Mssql數(shù)據(jù)庫(kù)教程Rss訂閱編程教程搜索
Mssql數(shù)據(jù)庫(kù)教程推薦
- 談SQL Data Services將成為云中完整的數(shù)據(jù)庫(kù)
- 怎樣輕松掌握 SQL Server 2000數(shù)據(jù)庫(kù)的構(gòu)架
- 分享:在存儲(chǔ)過(guò)程中使用另一個(gè)存儲(chǔ)過(guò)程返回的查詢結(jié)果集的方法
- sql2008安裝后服務(wù)器改名造成名稱不一致解決方法
- 揭秘在 SQL Server 數(shù)據(jù)庫(kù)開(kāi)發(fā)中的十大問(wèn)題
- sqlserver 2005連接超時(shí)采用bat命令解決
- sql server 2008 不允許保存更改,您所做的更改要求刪除并重新創(chuàng)建以下表
- 怎樣讓SQL Server加速運(yùn)行
- 如何檢測(cè)SQL Server是否有特洛伊木馬
- 談在SQL server2000中導(dǎo)入.sql數(shù)據(jù)庫(kù)文件的方法
猜你也喜歡看這些
- 淺析一個(gè)MYSQL語(yǔ)法(在查詢中使用count)的兼容性問(wèn)題
- Mysql高性能備份方案解決數(shù)據(jù)不間斷訪問(wèn)
- MySQL的重裝問(wèn)題解決方法
- SQL字符型字段按數(shù)字型字段排序?qū)崿F(xiàn)方法
- 網(wǎng)站模板:如何捕獲和記錄SQL Server中發(fā)生的死鎖
- mysql導(dǎo)出數(shù)據(jù)庫(kù)幾種方法
- 解析SQL語(yǔ)句中Replace INTO與INSERT INTO的不同之處
- 怎么重置mysql的自增列AUTO_INCREMENT初時(shí)值
- @@ROWCOUNT全局變量
- mysql使用source 命令亂碼問(wèn)題解決方法
- 相關(guān)鏈接:
復(fù)制本頁(yè)鏈接| 搜索淺談SQL Server 2008數(shù)據(jù)庫(kù)中的新數(shù)據(jù)類型
- 教程說(shuō)明:
Mssql數(shù)據(jù)庫(kù)教程-淺談SQL Server 2008數(shù)據(jù)庫(kù)中的新數(shù)據(jù)類型
。