Sql Server之旅——第一站 那些給我們帶來福利的系統檢視表

來源:互聯網
上載者:User

標籤:

原文:Sql Server之旅——第一站 那些給我們帶來福利的系統檢視表

  

  本來想這個系列寫點什麼好呢,後來想想大家作為程式員,用的最多的莫過於資料庫了,但是事實上很多像我這樣工作在一線的碼農,對sql

都一知半解,別談最佳化和對資料庫底層的認識了,我也是這樣。。。

 

一:那些系統檢視表

1. 系統檢視表是幹什麼呢?

  從名字上看就知道,系統檢視表嘛?猜的不錯的話,就是存放一些sqlserver系統的一些資訊,很好,恭喜你,答對了。

 

2. 都定義在哪呢?

   為了讓你眼見為實,下面看看,從中你可以看到,不管是“系統資料庫”還是“使用者資料庫”都是有這些系統檢視表的,而且一眼掃下去發

現連名字都一樣。

 

3.看看這些系統檢視表都能帶給我什麼福利?

   Q1:我在維護一個系統的時候,我只知道有一個資料庫中,有一個表的欄位叫 “state”,但我忘了是定義在那張表中?我該如

         何找出來?

 A1: 這個簡單,在sqlserver裡面提供了一個系統檢視表叫“INFORMATION_SCHEMA.COLUMNS”,下面我們看看。

    從這個系統檢視表名字中的這個SCHEMA這個單詞可知,原來是一個儲存表架構的視圖,而且還有這個欄位的“排位”,“預設值”這些特性,泥煤,

是不是有一種很爽的感覺???

 

  Q2:我在C#代碼中看到了一個預存程序名"CategoryInsert",我想看它的源碼,但是我的table中預存程序有幾千個,總不能讓我

   一個個的去找吧,,,拜托在系統檢視表中可有快捷的方法查看?

  A2:so easy。。。告訴你吧,只有你想不到的,沒有系統檢視表做不到,不就一個簡簡單單的看預存程序代碼嗎?

    sys.sql_modules就可以幫你實現。

 

Q3:這種方法好是好,但是copy的definition欄位是沒有格式化的。。。。大哥,上千行的sql哦。。。我特別想格式化的輸

   出怎麼辦呀?謝謝了。

A3:確實如你所說,格式化輸出的話,系統View只能幫你到這了,不過天無絕人之路,你可以使用系統預存程序,裡面有一個

  神奇的sp_helptext,可以祝你實現夢想,不用謝。

  

  

二:對系統檢視表的一些思考

  在上面的代碼中,我示範了兩個系統view,一個proc給我們帶來的福利,那麼仔細看一看,你就會有兩個疑惑。。。。

 

1:系統View在哪定義的?

  這個問題問的真好,從文章開頭我們就知道,我的使用者庫MYPETSHOP是有很多系統view的,但是我真的沒有定義這些view呀,老天可以

給我作證,那問題就很神秘了,system view到底從何而來?這個問題你也只有問sqlserver團隊了,他們將system view都放入了一個隱藏

的resource資料庫,那這個資料庫在哪呢?我給你找到。

 

找到了之後,我現在繼續附加進來,如果你夠聰明的話,你不能直接載入它,否則會報進程正在使用中,原因我想你也知道。

 

 

解決方案也很簡單,我們做一份copy到E盤。然後附加這個copy就好了。

 

既然附加進來了,我現在的感覺就是迫不及待的去看一看,細心的你通過下面的,我想你應該明白了些什麼,這些view並不是在”系統檢視表“

檔案夾下面的,而是正真的作為使用者視圖。。。對不對。。。

 

 

2:系統view的資料來源在何處?

    這個也是很經典的問題,既然是view,我想大家都明白,其實它就是虛表的意思,既然是虛表,那基礎資料表在何處?帶著這個問題我來翻一下

我的MYPETSHOP資料庫。

 

可以看到,上面的系統基表空空如也,黃鶴一去不複返,白雲千載空悠悠。。。那更大的疑問來了,如果連基礎資料表都沒有,那在這個DB中的

system view到底是查誰呢?這不是大忽悠嗎???但是事實是真的沒有嗎?因為你沒看到不代表真的沒有,可以繼續用system view來祝我

們一臂之力,接下來用sys.objects一探究竟。。。

 

好了,大概就說這麼多了,時候不早了,洗洗睡了。。。

 

Sql Server之旅——第一站 那些給我們帶來福利的系統檢視表

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.