程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> MSSQL >> Sql Server中的體系視圖具體引見

Sql Server中的體系視圖具體引見

編輯:MSSQL

Sql Server中的體系視圖具體引見。本站提示廣大學習愛好者:(Sql Server中的體系視圖具體引見)文章只能為提供參考,不一定能成為您想要的結果。以下是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一探討竟。。。

 好了,年夜概就說這麼多了,時刻不早了,洗洗睡了。。。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved