国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

解剖SQLSERVER 第九篇 OrcaMDF現(xiàn)在能通過系統(tǒng)DMVs顯示元數(shù)據(jù)(譯)

2024-07-21 02:48:57
字體:
來源:轉載
供稿:網(wǎng)友
解剖SQLSERVER 第九篇 OrcaMDF現(xiàn)在能通過系統(tǒng)DMVs顯示元數(shù)據(jù)(譯)解剖SQLSERVER 第九篇 OrcaMDF現(xiàn)在能通過系統(tǒng)DMVs顯示元數(shù)據(jù)(譯)

http://imPRove.dk/orcamdf-now-exposes-metadata-through-system-dmvs/

我坐在去丹麥的火車上,參加在北歐的SQL RALLY會議的最后一站。在演講的過程中,我根據(jù)OrcaMDF 的工作比較含蓄地宣布了OrcaMDF可以讀取元數(shù)據(jù)

現(xiàn)在,我也不妨在這里分享。除了在OrcaMDF中擴大對核心引擎的支持之外,另一個重要的我想要實現(xiàn)的主要功能之一就是顯示關于的你的數(shù)據(jù)庫的元數(shù)據(jù)

你的表,列,數(shù)據(jù)庫是怎麼展開的?

避免錯誤的抽象

我最初的想法是在上層對象下面創(chuàng)建自己的抽象層,你可以通過database.GetMetadata().UserTables 枚舉出你的所有的用戶表

你可以獲取用戶表的列表,包括數(shù)據(jù)列。從開發(fā)層面考慮這是一個非常清晰的接口,每樣東西都是普通的.NET對象。

然而,這需要我自己去定義抽象- 如何去劃分出哪些數(shù)據(jù)需要暴露,哪些數(shù)據(jù)不能,怎樣抽象對于DBA是最自然的,需不需要使用

類似SQLSERVER的 sys. DMVs

從SQLSERVER里暴露出內置的DMVs

我花費了一些時間考慮最后會有哪類人使用OrcaMDF ,最后得出結論是這個世界可能只有四類人會使用

而將這四類人再拆分開最終只有DBA和SQLSERVER開發(fā)人員。而他們通常會通過DVMs 例如sys.tables,sys.columns,sys.indexes

來瀏覽SQLSERVER數(shù)據(jù)庫的元數(shù)據(jù)。那么能夠使我有信心開發(fā)這個功能的動力是我已經(jīng)能解析出所有的系統(tǒng)表,并且使用SELECT OBJECT_DEFINITION()

我能夠看到內置的系統(tǒng)DMVs的源代碼。因此,創(chuàng)建我自己的內置DMVs的復制品是一件很簡單事

在OrcaMDF里如何使用DMVs

比如我們需要獲取某個表的所有列的信息,我們會建立如下SQL語句

SELECT    c.*FROM    sys.columns cINNER JOIN    sys.tables t ON c.object_id = t.object_idWHERE    t.name = 'Persons'

在OrcaMDF里的C#代碼里看起來會像這樣:

using (var db = new Database(new[] { @"C:Test.mdf" })){    var sys = db.Dmvs;    var table = sys.Tables.Where(t => t.Name == "Persons").Single();    var columns = sys.Columns.Where(c => c.ObjectID == table.ObjectID);    foreach (var col in columns)        Console.WriteLine(col.Name);}

如果你更喜歡SQL-esque LINQ的語法,你當然可以像下面那樣做

using (var db = new Database(new[] { @"C:Test.mdf" })){    var sys = db.Dmvs;    var columns =    from c in sys.Columns            join t in sys.Tables on c.ObjectID equals t.ObjectID            where t.Name == "Persons"            select c;    foreach (var col in columns)        Console.WriteLine(col.Name);}

不管使用哪種寫法,結果都會像下面那樣

可用的DMVs有哪些

如果你獲取到最新的已提交的OrcaMDF代碼,你可以訪問下面的DMVs,他們是通過SQLSERVER暴露出來的

sys.columnssys.indexessys.index_columnssys.objectssys.objects$sys.system_internals_allocation_unitssys.system_internals_partitionssys.system_internals_partition_columnssys.tablessys.types

如果你對DMV 有期望可以跟我聯(lián)系,我會讓你愿望成真!

第九篇完


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 义乌市| 竹山县| 深圳市| 呼玛县| 麻城市| 临江市| 宁晋县| 临高县| 抚州市| 苏尼特右旗| 洛隆县| 嘉峪关市| 昌邑市| 上高县| 霍山县| 广水市| 谷城县| 马鞍山市| 宁强县| 广德县| 观塘区| 邹城市| 石嘴山市| 宝应县| 巧家县| 罗定市| 方城县| 微山县| 武山县| 洪江市| 深水埗区| 定安县| 望都县| 闽侯县| 应城市| 都安| 武功县| 嘉祥县| 绥棱县| 宜春市| 武安市|