国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 多伦县| 韶山市| 高阳县| 剑阁县| 左贡县| 南郑县| 黄龙县| 老河口市| 万山特区| 武冈市| 通渭县| 榕江县| 玉树县| 岑巩县| 闽侯县| 高安市| 房产| 西青区| 临汾市| 岫岩| 济源市| 深州市| 全椒县| 崇文区| 吴江市| 顺昌县| 民权县| 黄龙县| 淮南市| 慈利县| 应用必备| 松阳县| 历史| 青龙| 钦州市| 乌海市| 天长市| 汝州市| 竹溪县| 宣汉县| 眉山市|