主頁(yè) > 知識(shí)庫(kù) > Sql Server中的系統(tǒng)視圖詳細(xì)介紹

Sql Server中的系統(tǒng)視圖詳細(xì)介紹

熱門標(biāo)簽:地方門戶網(wǎng)站 百度競(jìng)價(jià)排名 服務(wù)外包 Linux服務(wù)器 鐵路電話系統(tǒng) 呼叫中心市場(chǎng)需求 AI電銷 網(wǎng)站排名優(yōu)化

本來(lái)想這個(gè)系列寫點(diǎn)什么好呢,后來(lái)想想大家作為程序員,用的最多的莫過(guò)于數(shù)據(jù)庫(kù)了,但是事實(shí)上很多像我這樣工作在一線的碼農(nóng),對(duì)sql都一知半解,別談優(yōu)化和對(duì)數(shù)據(jù)庫(kù)底層的認(rèn)識(shí)了,我也是這樣。。。

 一:那些系統(tǒng)視圖

1. 系統(tǒng)視圖是干什么呢?

  從名字上看就知道,系統(tǒng)視圖嘛?猜的不錯(cuò)的話,就是存放一些sqlserver系統(tǒng)的一些信息,很好,恭喜你,答對(duì)了。

 2. 都定義在哪呢?

   為了讓你眼見(jiàn)為實(shí),下面截圖看看,從截圖中你可以看到,不管是“系統(tǒng)數(shù)據(jù)庫(kù)”還是“用戶數(shù)據(jù)庫(kù)”都是有這些系統(tǒng)視圖的,而且一眼掃下去發(fā)現(xiàn)連名字都一樣。

 3.看看這些系統(tǒng)視圖都能帶給我什么福利?

   Q1:我在維護(hù)一個(gè)系統(tǒng)的時(shí)候,我只知道有一個(gè)數(shù)據(jù)庫(kù)中,有一個(gè)表的字段叫 “state”,但我忘了是定義在那張表中?我該如何找出來(lái)?

 A1: 這個(gè)簡(jiǎn)單,在sqlserver里面提供了一個(gè)系統(tǒng)視圖叫“INFORMATION_SCHEMA.COLUMNS”,下面我們截圖看看。

    從這個(gè)系統(tǒng)視圖名字中的這個(gè)SCHEMA這個(gè)單詞可知,原來(lái)是一個(gè)保存表架構(gòu)的視圖,而且還有這個(gè)字段的“排位”,“默認(rèn)值”這些特性,泥煤,是不是有一種很爽的感覺(jué)???

   Q2:我在C#代碼中看到了一個(gè)存儲(chǔ)過(guò)程名"CategoryInsert",我想看它的源碼,但是我的table中存儲(chǔ)過(guò)程有幾千個(gè),總不能讓我 一個(gè)個(gè)的去找吧,,,拜托在系統(tǒng)視圖中可有快捷的方法查看?

  A2:so easy。。。告訴你吧,只有你想不到的,沒(méi)有系統(tǒng)視圖做不到,不就一個(gè)簡(jiǎn)簡(jiǎn)單單的看存儲(chǔ)過(guò)程代碼么?sys.sql_modules就可以幫你實(shí)現(xiàn)。

 

Q3:這種方法好是好,但是copy的definition字段是沒(méi)有格式化的。。。。大哥,上千行的sql哦。。。我特別想格式化的輸出怎么辦呀?謝謝了。

A3:確實(shí)如你所說(shuō),格式化輸出的話,系統(tǒng)View只能幫你到這了,不過(guò)天無(wú)絕人之路,你可以使用系統(tǒng)存儲(chǔ)過(guò)程,里面有一個(gè)神奇的sp_helptext,可以祝你實(shí)現(xiàn)夢(mèng)想,不用謝。

  

二:對(duì)系統(tǒng)視圖的一些思考

  在上面的代碼中,我演示了兩個(gè)系統(tǒng)view,一個(gè)proc給我們帶來(lái)的福利,那么仔細(xì)看一看,你就會(huì)有兩個(gè)疑惑。。。。

 1:系統(tǒng)View在哪定義的?

  這個(gè)問(wèn)題問(wèn)的真好,從文章開(kāi)頭我們就知道,我的用戶庫(kù)MYPETSHOP是有很多系統(tǒng)view的,但是我真的沒(méi)有定義這些view呀,老天可以給我作證,那問(wèn)題就很神秘了,system view到底從何而來(lái)?這個(gè)問(wèn)題你也只有問(wèn)sqlserver團(tuán)隊(duì)了,他們將system view都放入了一個(gè)隱藏的resource數(shù)據(jù)庫(kù),那這個(gè)數(shù)據(jù)庫(kù)在哪呢?我給你找到。

 找到了之后,我現(xiàn)在繼續(xù)附加進(jìn)來(lái),如果你夠聰明的話,你不能直接加載它,否則會(huì)報(bào)進(jìn)程正在使用中,原因我想你也知道。

 

 解決方法也很簡(jiǎn)單,我們做一份copy到E盤。然后附加這個(gè)copy就好了。

 既然附加進(jìn)來(lái)了,我現(xiàn)在的感覺(jué)就是迫不及待的去看一看,細(xì)心的你通過(guò)下面的截圖,我想你應(yīng)該明白了些什么,這些view并不是在”系統(tǒng)視圖“文件夾下面的,而是正真的作為用戶視圖。。。對(duì)不對(duì)。。。

 2:系統(tǒng)view的數(shù)據(jù)源在何處?

    這個(gè)也是很經(jīng)典的問(wèn)題,既然是view,我想大家都明白,其實(shí)它就是虛表的意思,既然是虛表,那基礎(chǔ)表在何處?帶著這個(gè)問(wèn)題我來(lái)翻一下我的MYPETSHOP數(shù)據(jù)庫(kù)。

 可以看到,上面的系統(tǒng)基表空空如也,黃鶴一去不復(fù)返,白云千載空悠悠。。。那更大的疑問(wèn)來(lái)了,如果連基礎(chǔ)表都沒(méi)有,那在這個(gè)DB中的system view到底是查誰(shuí)呢?這不是大忽悠么???但是事實(shí)是真的沒(méi)有嗎?因?yàn)槟銢](méi)看到不代表真的沒(méi)有,可以繼續(xù)用system view來(lái)祝我們一臂之力,接下來(lái)用sys.objects一探究竟。。。

 好了,大概就說(shuō)這么多了,時(shí)候不早了,洗洗睡了。。。

您可能感興趣的文章:
  • SQL Server 利用觸發(fā)器對(duì)多表視圖進(jìn)行更新的實(shí)現(xiàn)方法
  • 細(xì)說(shuō)SQL Server中的視圖
  • 簡(jiǎn)析SQL Server數(shù)據(jù)庫(kù)用視圖來(lái)處理復(fù)雜的數(shù)據(jù)查詢關(guān)系
  • 解析SQL Server 視圖、數(shù)據(jù)庫(kù)快照
  • Sql Server中的視圖介紹
  • SQL SERVER先判斷視圖是否存在然后再創(chuàng)建視圖的語(yǔ)句
  • sql server判斷數(shù)據(jù)庫(kù)、表、列、視圖是否存在
  • SQL server 視圖(view)介紹
  • 存儲(chǔ)過(guò)程解密(破解函數(shù),過(guò)程,觸發(fā)器,視圖.僅限于SQLSERVER2000)
  • SQL Server視圖的講解

標(biāo)簽:崇左 銅川 仙桃 衡水 湖南 湘潭 蘭州 黃山

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Sql Server中的系統(tǒng)視圖詳細(xì)介紹》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266