解剖SQLSERVER 第九篇 OrcaMDF现在能通过系统DMVs显示元数据(
解剖SQLSERVER 第九篇 OrcaMDF现在能通过系统DMVs显示元数据(译) http://improve.dk/orcamdf-now-exposes-metadata-through-system-dmvs/ 我坐在去丹麦的火车上,参加在北欧的SQL RALLY会议的最后一站。在演讲的过程中,我根据OrcaMDF 的工作比较含蓄地宣
解剖SQLSERVER 第九篇 OrcaMDF现在能通过系统DMVs显示元数据(译)
http://improve.dk/orcamdf-now-exposes-metadata-through-system-dmvs/
我坐在去丹麦的火车上,参加在北欧的SQL RALLY会议的最后一站。在演讲的过程中,我根据OrcaMDF 的工作比较含蓄地宣布了OrcaMDF可以读取元数据
现在,我也不妨在这里分享。除了在OrcaMDF中扩大对核心引擎的支持之外,另一个重要的我想要实现的主要功能之一就是显示关于的你的数据库的元数据
你的表,列,数据库是怎麽展开的?
避免错误的抽象
我最初的想法是在上层对象下面创建自己的抽象层,你可以通过database.GetMetadata().UserTables 枚举出你的所有的用户表
你可以获取用户表的列表,包括数据列。从开发层面考虑这是一个非常清晰的接口,每样东西都是普通的.NET对象。
然而,这需要我自己去定义抽象- 如何去划分出哪些数据需要暴露,哪些数据不能,怎样抽象对于DBA是最自然的,需不需要使用
类似SQLSERVER的 sys. DMVs
从SQLSERVER里暴露出内置的DMVs
我花费了一些时间考虑最后会有哪类人使用OrcaMDF ,最后得出结论是这个世界可能只有四类人会使用
而将这四类人再拆分开最终只有DBA和SQLSERVER开发人员。而他们通常会通过DVMs 例如sys.tables,sys.columns,sys.indexes
来浏览SQLSERVER数据库的元数据。那么能够使我有信心开发这个功能的动力是我已经能解析出所有的系统表,并且使用 SELECT OBJECT_DEFINITION()
我能够看到内置的系统DMVs的源代码。因此,创建我自己的内置DMVs的复制品是一件很简单事
在OrcaMDF里如何使用DMVs
比如我们需要获取某个表的所有列的信息,我们会建立如下SQL语句
<span>SELECT</span><span> c.</span><span>*</span> <span>FROM</span><span> sys.columns c </span><span>INNER</span> <span>JOIN</span><span> sys.tables t </span><span>ON</span> c.<span>object_id</span> <span>=</span> t.<span>object_id</span> <span>WHERE</span><span> t.name </span><span>=</span> <span>'</span><span>Persons</span><span>'</span>
在OrcaMDF里的C#代码里看起来会像这样:
<span>using</span> (<span>var</span> db = <span>new</span> Database(<span>new</span>[] { <span>@"</span><span>C:Test.mdf</span><span>"</span><span> })) { </span><span>var</span> sys =<span> db.Dmvs; </span><span>var</span> table = sys.Tables.Where(t => t.Name == <span>"</span><span>Persons</span><span>"</span><span>).Single(); </span><span>var</span> columns = sys.Columns.Where(c => c.ObjectID ==<span> table.ObjectID); </span><span>foreach</span> (<span>var</span> col <span>in</span><span> columns) Console.WriteLine(col.Name); }</span>
如果你更喜欢SQL-esque LINQ的语法,你当然可以像下面那样做
<span>using</span> (<span>var</span> db = <span>new</span> Database(<span>new</span>[] { <span>@"</span><span>C:Test.mdf</span><span>"</span><span> })) { </span><span>var</span> sys =<span> db.Dmvs; </span><span>var</span> columns = <span>from</span> c <span>in</span><span> sys.Columns join t </span><span>in</span><span> sys.Tables on c.ObjectID equals t.ObjectID </span><span>where</span> t.Name == <span>"</span><span>Persons</span><span>"</span> <span>select</span><span> c; </span><span>foreach</span> (<span>var</span> col <span>in</span><span> columns) Console.WriteLine(col.Name); }</span>
不管使用哪种写法,结果都会像下面那样
可用的DMVs有哪些
如果你获取到最新的已提交的OrcaMDF代码,你可以访问下面的DMVs,他们是通过SQLSERVER暴露出来的
<span>sys.columns sys.indexes sys.index_columns sys.objects sys.objects$ sys.system_internals_allocation_units sys.system_internals_partitions sys.system_internals_partition_columns sys.tables sys.types</span>
如果你对DMV 有期望可以跟我联系,我会让你愿望成真!
第九篇完

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

匯入步驟如下:將 MDF 檔案複製到 SQL Server 的資料目錄(通常為 C:\Program Files\Microsoft SQL Server\MSSQL\DATA)。在 SQL Server Management Studio(SSMS)中,開啟資料庫並選擇「附加」。點選“新增”按鈕,選擇 MDF 檔案。確認資料庫名稱,點選確定按鈕即可。

對於 SQL Server 資料庫中已存在同名對象,需要採取下列步驟:確認物件類型(表格、檢視、預存程序)。如果物件為空,可使用 IF NOT EXISTS 跳過建立。如果物件有數據,使用不同名稱或修改結構。使用 DROP 刪除現有物件(謹慎操作,建議備份)。檢查架構更改,確保沒有引用刪除或重新命名的物件。

若要查看 SQL Server 連接埠號碼:開啟 SSMS,連線到伺服器。在物件資源管理器中找到伺服器名稱,右鍵單擊它,然後選擇“屬性”。在「連線」標籤中,查看「TCP 連接埠」欄位。

若誤刪 SQL Server 資料庫,可採取下列步驟還原:停止資料庫活動;備份日誌檔案;檢查資料庫日誌;復原選項:從備份還原;從交易日誌還原;使用 DBCC CHECKDB;使用第三方工具。請定期備份資料庫並啟用交易日誌以防止資料遺失。

當 SQL Server 服務無法啟動時,可採取下列步驟解決:檢查錯誤日誌以確定根本原因。確保服務帳戶具有啟動服務的權限。檢查依賴項服務是否正在執行。禁用防毒軟體。修復 SQL Server 安裝。如果修復不起作用,重新安裝 SQL Server。

SQL Server 資料庫檔案通常儲存在下列預設位置:Windows: C:\Program Files\Microsoft SQL Server\MSSQL\DATALinux: /var/opt/mssql/data可透過修改資料庫檔案路徑設定來自訂資料庫檔案位置。

問題發現這次使用的是SqlServer資料庫,之前並沒有使用過,但是問題不大,我按照需求文檔的步驟連接好SqlServer之後,啟動SpringBoot項目,發現了一個報錯,如下:剛開始我以為是SqlServer連接問題呢,於是便去查看資料庫,發現資料庫一切正常,我首先第一時間問了我的同事,他們是否有這樣的問題,發現他們並沒有,於是我便開始了我最拿手的環節,面向百度程式設計.開始解決具體報錯資訊是這樣,於是我便開始了百度報錯:ERRORc.a.d.p.DruidDataSource$CreateCo

如果 SQL Server 安裝失敗,可透過下列步驟清理:解除安裝 SQL Server刪除註冊表項刪除檔案和資料夾重新啟動計算機
