淺談SQL Server 2008數據庫中的新數據類型_Mssql數據庫教程
推薦:解讀選擇是否恢復整個SQL Server的方法這有一個具體例子:如果你有一個單個的出現問題的文件。這個文件有50MB大小,而你的整個數據庫運行著大約有幾十億的字節,這樣的話如果能恢復單個失敗文件的話就顯的非常有意義。這樣
對于關系型數據庫來說,表現樹狀的層次結構始終是一個問題。微軟在SQL Server 2005中首次嘗試了解決這個問題,那就是被稱之為通用數據表表達式(Common Table Expressions,CTE)的實現方式。盡管CTE在現有的數據庫架構中運行良好,微軟找到了一種將此類層次結構作為頭等概念來使用的方式。因此,為了實現這種效果,他們在SQL Server 2008中提出了一種“HierarchId”數據類型。
在傳統的層次結構中,一條記錄僅僅儲存了一個指向它父記錄的引用,這使得一條記錄能夠獲得它在層次結構中的相對位置,而不是絕對位置。改變某條記錄的父數據行引用是一個原子更新操作,它不會影響到該記錄的任何子記錄。
一個HierarchyId類型的字段儲存了記錄在層次結構中的準確位置。Denny Cherry提供了一個例子,其中展示了0x、0x58以及0x5AC0三個值,它們的字符串表現形式分別為“/”,“/1/”和“/1/1/”。這就引發了有關一致性和性能方面的問題,尤其是父記錄被改變的時候。Ravi S.Maniam建議在改變父記錄操作不頻繁的情況下使用這種設計方式。
與HierarchyId類型同時出現的還有一系列函數。GetAncestor和GetDescendant方法可以用來遍歷樹。ToString和Parse方法用于HierarchyId類型二進制與字符串表現形式之前的轉換。有些古怪的是,隨之而來的還有用于支持BinaryReader與BinaryWriter的一些方法。再來回頭看看GetDescendant,這是一個有些古怪的方法。它實際上不返回那些子記錄,而是返回那些潛在的子節點的位置。向樹中插入一個新的記錄時,我們必需調用GetDescendant方法來獲得指定父記錄的最后一個子節點的位置,然后才能獲得緊跟著該位置之后的空隙。
迄今為止還沒有使用T-SQL來獲得樹狀結構的合適示例。事實上,與它有關的所有東西都更像是一些命令,而不是基于集合的操作。
分享:淺析管理SQL Server數據庫和應用元數據問題 我常被問到如何把駐留在物理服務器/SQL 實例上的數據庫轉變為它們相應的應用程序名稱。在準備計劃好的服務器停機通知時,這種需要就產生了,但在我的組織內與IT經理或非技術
- sql 語句練習與答案
- 深入C++ string.find()函數的用法總結
- SQL Server中刪除重復數據的幾個方法
- sql刪除重復數據的詳細方法
- SQL SERVER 2000安裝教程圖文詳解
- 使用sql server management studio 2008 無法查看數據庫,提示 無法為該請求檢索數據 錯誤916解決方法
- SQLServer日志清空語句(sql2000,sql2005,sql2008)
- Sql Server 2008完全卸載方法(其他版本類似)
- sql server 2008 不允許保存更改,您所做的更改要求刪除并重新創建以下表
- SQL Server 2008 清空刪除日志文件(瞬間日志變幾M)
- Win7系統安裝MySQL5.5.21圖解教程
- 將DataTable作為存儲過程參數的用法實例詳解
- 相關鏈接:
- 教程說明:
Mssql數據庫教程-淺談SQL Server 2008數據庫中的新數據類型。