在開發(fā)過程中會(huì)遇到需要弄清楚這個(gè)數(shù)據(jù)庫什么時(shí)候建的,這個(gè)數(shù)據(jù)庫中有多少表,這個(gè)存儲(chǔ)過程長的什么樣子等等信息,今天把自己工作過程中經(jīng)常用到的一些數(shù)據(jù)庫引擎存儲(chǔ)過程,系統(tǒng)視圖等等總結(jié)一下以備不時(shí)之用。下面的知識(shí)多是自己總結(jié),有一些參考了MSDN。
sp_help
有時(shí)候想盡快查出數(shù)據(jù)庫對(duì)象的相關(guān)信息,這個(gè)存儲(chǔ)過程就很有用了。使用它可以查詢出整個(gè)數(shù)據(jù)庫中所有對(duì)象的相關(guān)信息。直接運(yùn)行sp_help結(jié)果如下圖1,上面是數(shù)據(jù)庫對(duì)象,包含系統(tǒng)自定義的表,視圖等等,下面是自定義數(shù)據(jù)類型
圖1
如果我只想找到某一中數(shù)據(jù)類型的長度,精度等信息可以運(yùn)行sp_help datatypename,如下圖2
圖2
如果我想找出某一個(gè)表的相關(guān)信息可以運(yùn)行sp_help tablename,如下圖3
圖3
如圖運(yùn)行結(jié)果的第一個(gè)查出表基本信息,第二個(gè)查出所有的列,第三個(gè)查出主鍵信息,第四個(gè)表查出列的標(biāo)識(shí),第五個(gè)返回所在的文件組信息。
如果我想查出一個(gè)存儲(chǔ)過程的相關(guān)信息可以像上面一樣直接使用sp_help procname,如下圖4
圖4
這里需要注意有時(shí)候需要使用單引號(hào)將數(shù)據(jù)庫對(duì)象包含起來。第一個(gè)表查出存儲(chǔ)過程的名稱等信息,第二個(gè)查出參數(shù)信息。
sp_helptext
有時(shí)候我們需要查出存儲(chǔ)過程長的什么樣子的,雖然可以點(diǎn)擊Script Stored Procedure as,CREATE To,New Query Editor Window找到,如圖5
圖5
但是這樣顯得有點(diǎn)羅嗦,如果有很多的存儲(chǔ)過程我們不可能很快地點(diǎn)擊選中我們想要查的哪一個(gè)。如果使用sp_helptext procname就可以很快地找到這些信息,如圖6
圖6
如圖,默認(rèn)是使用grid顯示文本,也可以使用文本格式,只要點(diǎn)擊 Result to text就可以顯示文本格式。如果你還是覺得這樣不爽,關(guān)鍵字沒有顏色,你可以選中所有文本復(fù)制到SQL文本編輯器中。同樣你也可以使用sp_helptext查出數(shù)據(jù)庫中的視圖,函數(shù),自定義計(jì)算列等對(duì)象的文本內(nèi)容。
sp_helpdb
一般我們拿到客戶的數(shù)據(jù)庫服務(wù)器端時(shí)候,我們首選要搞清楚這個(gè)服務(wù)器上有多少個(gè)數(shù)據(jù)庫,分別是那些用戶創(chuàng)建的等等信息,你也許會(huì)直接打開這個(gè)數(shù)據(jù)庫用鼠標(biāo)點(diǎn)擊查看,但是如果有很多的數(shù)據(jù)庫就不那么方便了,這個(gè)時(shí)候直接運(yùn)行sp_helpdb就很容易查出來了。如下圖7。
圖7
如圖查詢出了我的數(shù)據(jù)庫軟件中所有的數(shù)據(jù)庫信息。如果我想知道某一個(gè)數(shù)據(jù)庫的詳細(xì)信息,可以使用sp_helpdb dbname查詢,如圖8。
圖8
如圖第一個(gè)表查出這個(gè)數(shù)據(jù)庫的基本信息,第二個(gè)表查詢得到這個(gè)數(shù)據(jù)庫的數(shù)據(jù)庫文件信息等。其他還有很多的數(shù)據(jù)庫引擎存儲(chǔ)過程例如:
sp_helpconstraint可以查出當(dāng)前數(shù)據(jù)庫中所遇的約束信息。
sp_helpextendedproc可以查詢所有的擴(kuò)展存儲(chǔ)過程,以及所屬的dll的名稱,這個(gè)在上一個(gè)隨筆: SQL點(diǎn)滴15—在SQL Server 2008中調(diào)用C#程序 中提到過。
sp_helpfile和sp_helpdb dbname的效果差不多,查詢當(dāng)前數(shù)據(jù)庫的數(shù)據(jù)庫文件信息。
sp_helpfilegroup返回當(dāng)前數(shù)據(jù)庫的數(shù)據(jù)庫文件關(guān)聯(lián)的文件組的信息。
Sp_helpindex tablename返回表或視圖中的索引的信息。
Sp_helplanguage返回?cái)?shù)據(jù)庫中安裝的語言信息。
Sp_helpserver顯示當(dāng)前已經(jīng)連接的所有服務(wù)器的信息。
Sp_helpsort返回服務(wù)器默認(rèn)的排序規(guī)則。
Sys.objects
數(shù)據(jù)庫開發(fā)和application開發(fā)有些不同,沒有一個(gè)像CC,VSS,SVN一樣的管理工具來管理代碼,因?yàn)樗械拇a都存放在數(shù)據(jù)庫中,不要跟蹤。假設(shè)我們要等待數(shù)據(jù)庫設(shè)計(jì)人員建好表或存儲(chǔ)過程后導(dǎo)入數(shù)據(jù),但是遲遲不見動(dòng)靜,這時(shí)候我們就可以看看數(shù)據(jù)庫中所有的自定義對(duì)象,按照最后更新時(shí)間來排序。運(yùn)行下面的語句:select * from sys.objects where type in('U','V','P') order by modify_date
這個(gè)語句查出數(shù)據(jù)庫中的所有的用戶表,視圖,存儲(chǔ)過程并按時(shí)間排序,這樣就可以看到別人最近添加,修改了那些數(shù)據(jù)庫對(duì)象。Sys.objects不包含觸發(fā)器,觸發(fā)器在sys.triggers中。類似的還有sys.tables,sys.views等等。
information_schema
如果我們想快速查詢?cè)谶@個(gè)數(shù)據(jù)庫中是否包含address這樣的字樣的列,并查出它在那個(gè)數(shù)據(jù)庫中,那個(gè)表中,它的數(shù)據(jù)類型信息等,這時(shí)候使用information_schema這個(gè)架構(gòu)信息就很有用了,如下圖9。
圖9
相同的在information_schema這個(gè)架構(gòu)中還有很多的信息例如:
information_schema.tables返回表信息,
information_schema.check_constraints返回check約束信息,
information_schema.views返回視圖信息,
information_schema.routines返回存儲(chǔ)過程信息,還有很多這里不再列舉。
總之SQL Server數(shù)據(jù)庫提供了豐富的對(duì)象統(tǒng)計(jì)信息供我們使用,上面只是我經(jīng)常用到的一部分,在這里拋磚引玉了。
SQL點(diǎn)滴17—使用數(shù)據(jù)庫引擎存儲(chǔ)過程,系統(tǒng)視圖查詢,DBA,BI開發(fā)人員必備基礎(chǔ)知識(shí)
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
