獲得SQL Server 2005中所有存儲(chǔ)過(guò)程的方法_Mssql數(shù)據(jù)庫(kù)教程
推薦:SQL Server COALESCE()函數(shù)的創(chuàng)新應(yīng)用COALESCE()函數(shù)可以接受一系列的值,如果列表中所有項(xiàng)都為空(null),那么只使用一個(gè)值。然后,它將返回第一個(gè)非空值。這一技巧描述了創(chuàng)造性使用SQL Server 中COALESCE()函數(shù)的兩種
對(duì)于數(shù)據(jù)庫(kù)管理員來(lái)說(shuō),可以經(jīng)常想了解一些之前未聽(tīng)說(shuō)過(guò)的存儲(chǔ)過(guò)程,特別是無(wú)文檔類型的存儲(chǔ)過(guò)程。或許是用這些存儲(chǔ)過(guò)程,能夠簡(jiǎn)化日常的數(shù)據(jù)管理。
為了查找這些存儲(chǔ)過(guò)程,你可以花時(shí)間在互聯(lián)網(wǎng)搜索,查看一些你還未知道的存儲(chǔ)過(guò)程,也許在一兩個(gè)小時(shí)您可能會(huì)發(fā)現(xiàn)你想要...也許你很幸運(yùn)的找到,其他人在他們的文章中列出所有的存儲(chǔ)過(guò)程 ,函數(shù)和視圖,并介紹了如何使用這些存儲(chǔ)過(guò)程。
但其實(shí),您可以在一分鐘之內(nèi)就可以自己列出這些存儲(chǔ)過(guò)程、函數(shù)和視圖的清單!這份名單甚至包括SQL Server中所有無(wú)文檔的存儲(chǔ)過(guò)程。通過(guò)這個(gè)清單,你就可以確定你所想要找的存儲(chǔ)過(guò)程。
SQL Server 2005實(shí)際上保存了所有存儲(chǔ)過(guò)程的列表,包括有文檔的、無(wú)文檔的,甚至是用戶自定義的!所有這些信息,都包含在系統(tǒng)表中。最簡(jiǎn)單的方法是使用一個(gè)系統(tǒng)視圖,特別是sys.all_objects這個(gè)視圖來(lái)查閱。
您也可以使用sys.procedures目錄視圖,但我的測(cè)試結(jié)果,發(fā)現(xiàn)這個(gè)視圖會(huì)過(guò)濾掉一些儲(chǔ)存過(guò)程。
您也可以使用系統(tǒng)儲(chǔ)存過(guò)程sp_stored_procedures返回當(dāng)前環(huán)境中的存儲(chǔ)過(guò)程列表 ,但這個(gè)存儲(chǔ)過(guò)程同樣也限制了存儲(chǔ)過(guò)程返回值。
通過(guò)對(duì)比,我覺(jué)得:如果想獲得SQL Server 2005中所有的儲(chǔ)存程序,建議使用sys.all_objects這個(gè)系統(tǒng)視圖,sys.Procedures或sp_Stored_Procedures這兩個(gè)視圖會(huì)因?yàn)槟承┪粗颍^(guò)濾掉一些內(nèi)容,造成信息不全。
存儲(chǔ)過(guò)程信息是存儲(chǔ)在各自用戶數(shù)據(jù)庫(kù)中的系統(tǒng)表中的。SQL Server 2005保存了存儲(chǔ)過(guò)程的唯一標(biāo)識(shí)信息,如存儲(chǔ)過(guò)程的名稱、創(chuàng)建時(shí)間、修改時(shí)間、是否來(lái)自微軟等等。
如何確保所有的用戶數(shù)據(jù)庫(kù)都能夠自動(dòng)創(chuàng)建這些存儲(chǔ)過(guò)程呢?
當(dāng)SQL Server部署完成后,微軟提供的存儲(chǔ)過(guò)程,是保存在master數(shù)據(jù)庫(kù)中的。當(dāng)您新建一個(gè)數(shù)據(jù)庫(kù)時(shí),master數(shù)據(jù)庫(kù)將作為模板數(shù)據(jù)庫(kù),因此,master數(shù)據(jù)庫(kù)中的所有存儲(chǔ)過(guò)程將自動(dòng)創(chuàng)建到你所新建的數(shù)據(jù)庫(kù)中。
如果你想創(chuàng)建一個(gè)存儲(chǔ)過(guò)程,并希望能夠自動(dòng)分發(fā)到所有的數(shù)據(jù)庫(kù)中,你可以在master數(shù)據(jù)庫(kù)中建立該存儲(chǔ)過(guò)程,這樣之后新創(chuàng)建的數(shù)據(jù)庫(kù)中,將自動(dòng)包含你新建的這個(gè)存儲(chǔ)過(guò)程; 但對(duì)于之前已經(jīng)存在的數(shù)據(jù)庫(kù),你仍需要到每個(gè)數(shù)據(jù)庫(kù)中手動(dòng)創(chuàng)建這個(gè)存儲(chǔ)過(guò)程。
一、列出所有的儲(chǔ)存過(guò)程
以下代碼列出了SQL Server 2005中存在的所有儲(chǔ)存過(guò)程。
<以下為引用的內(nèi)容:
USE [your_database_name_here];
GO
SELECT * FROM sys.all_objects
WHERE ([type] = 'P' OR [type] = 'X' OR [type] = 'PC')
ORDER BY [name];
GO
如果您已經(jīng)安裝了SQL Server 2005,并使用了所有的默認(rèn)設(shè)置時(shí),你將看到類似一下界面:
上面這個(gè)命令,通過(guò)Type對(duì)象進(jìn)行過(guò)濾。從下表中,你可以確定自己所需的對(duì)象的類型,然后根據(jù)你的實(shí)際情況,調(diào)整WHERE子句中的類型。
此列表僅列出了意見(jiàn),職能和程序。
二、用戶自定義存儲(chǔ)過(guò)程
在日常使用中,另一個(gè)字段“is_ms_shipped”也經(jīng)常用來(lái)篩選記錄。該字段用來(lái)判斷存儲(chǔ)過(guò)程是有微軟發(fā)布的 ,如果最初是由微軟發(fā)布的,則該字段的值為0; 如果不是由微軟發(fā)布的,則該字段的值為1 。
在上面的T-SQL語(yǔ)句的基礎(chǔ)上,您只要增加個(gè)限制條件“and [ is_ms_shipped ] = 0 ”,就可以找到不是微軟創(chuàng)建的存儲(chǔ)過(guò)程,這些或許是你或者第三方軟件商訪問(wèn)數(shù)據(jù)庫(kù)時(shí)創(chuàng)建的。如果您只想看看微軟提供的儲(chǔ)存過(guò)程,只要將值從0到1即可 。
下面舉例說(shuō)明,通過(guò)一個(gè)T-SQL代碼演示如何獲取只有用戶定義的存儲(chǔ)過(guò)程。
以下為引用的內(nèi)容:
USE [your_database_name_here];
GO
SELECT * FROM sys.all_objects
WHERE ([type] = 'P' OR [type] = 'X' OR [type] = 'PC')
AND [is_ms_shipped] = 0
ORDER BY [name];
GO
需要注意的是,這個(gè)語(yǔ)句的執(zhí)行結(jié)果,因每個(gè)人的數(shù)據(jù)庫(kù)的情況不同,而得到不同的記錄列表。情況而異。執(zhí)行之后,將看到類似下圖的輸出結(jié)果。
三、小結(jié)
通過(guò)上面的例子可以看到,通過(guò)少量代碼,我們就可以很容易地、快速地獲得自己所用的SQL Server 的存儲(chǔ)過(guò)程列表,你不必在一個(gè)個(gè)網(wǎng)站中搜索這些存儲(chǔ)過(guò)程了。你可能會(huì)學(xué)到一個(gè)之前自己花了很大精力編寫的復(fù)雜腳本,現(xiàn)在直接用一個(gè)存儲(chǔ)過(guò)程就可以實(shí)現(xiàn)同樣的效果了。
請(qǐng)記住,當(dāng)使用一個(gè)不能確定來(lái)源或結(jié)果的存儲(chǔ)過(guò)程,應(yīng)該在測(cè)試系統(tǒng)先驗(yàn)證; 從來(lái)沒(méi)有使用任何沒(méi)有得到徹底的測(cè)試在生產(chǎn)環(huán)境中。
本文只是告訴各位可以用來(lái)獲得SQL Server 2005中所有存儲(chǔ)過(guò)程的方法,但不是鼓勵(lì)你隨意使用任何類型的存儲(chǔ)過(guò)程,特別是無(wú)文檔類型的。Microsoft一再聲明:微軟對(duì)所有無(wú)文檔的存儲(chǔ)過(guò)程,擴(kuò)展存儲(chǔ)過(guò)程,函數(shù)和視圖,均不提供任何相關(guān)的支持。
分享:解決SQL查詢中的轉(zhuǎn)義序列不對(duì)的方法使用Sybase WorkSpace連接到Sybase IQ,執(zhí)行如下SQL: 以下為引用的內(nèi)容: createPROCEDUREtest() BEGIN Print&rsqu
- sql 語(yǔ)句練習(xí)與答案
- 深入C++ string.find()函數(shù)的用法總結(jié)
- SQL Server中刪除重復(fù)數(shù)據(jù)的幾個(gè)方法
- sql刪除重復(fù)數(shù)據(jù)的詳細(xì)方法
- SQL SERVER 2000安裝教程圖文詳解
- 使用sql server management studio 2008 無(wú)法查看數(shù)據(jù)庫(kù),提示 無(wú)法為該請(qǐng)求檢索數(shù)據(jù) 錯(cuò)誤916解決方法
- SQLServer日志清空語(yǔ)句(sql2000,sql2005,sql2008)
- Sql Server 2008完全卸載方法(其他版本類似)
- sql server 2008 不允許保存更改,您所做的更改要求刪除并重新創(chuàng)建以下表
- SQL Server 2008 清空刪除日志文件(瞬間日志變幾M)
- Win7系統(tǒng)安裝MySQL5.5.21圖解教程
- 將DataTable作為存儲(chǔ)過(guò)程參數(shù)的用法實(shí)例詳解
Mssql數(shù)據(jù)庫(kù)教程Rss訂閱編程教程搜索
Mssql數(shù)據(jù)庫(kù)教程推薦
- 在SQL Server數(shù)據(jù)庫(kù)中批量導(dǎo)入數(shù)據(jù)的四種方法
- 解析SQL Server 2008升級(jí)報(bào)表服務(wù)器數(shù)據(jù)庫(kù)
- 詳解SQL Server數(shù)據(jù)體系和應(yīng)用程序邏輯
- 談SQL將挑戰(zhàn)操作系統(tǒng)安全
- 在SQL Server中實(shí)現(xiàn)最短路徑搜索的解決方法
- 如何設(shè)定sql server定期自動(dòng)備份數(shù)據(jù)庫(kù)
- 怎樣讓SQL Server加速運(yùn)行
- 讓你的MySQL數(shù)據(jù)庫(kù)徹底與中文聯(lián)姻
- 怎樣改善SQL Server數(shù)據(jù)庫(kù)的內(nèi)存管理
- 在sqlserver2005中安裝sql server 2000的示例數(shù)據(jù)庫(kù)northwind的方法
猜你也喜歡看這些
- MySQL的重裝問(wèn)題解決方法
- 淺談SQLite時(shí)間函數(shù)的使用說(shuō)明與總結(jié)分析
- MySQL多表之間字段的匹配實(shí)現(xiàn)代碼
- mysql手動(dòng)刪除BINLOG的方法
- Mysql DNS反向解析導(dǎo)致連接超時(shí)過(guò)程分析(skip-name-resolve)
- 擁有5星評(píng)級(jí)數(shù)據(jù)庫(kù)表結(jié)構(gòu) 如何才能更高效的使用?
- MySQL筆記之觸發(fā)器的應(yīng)用
- Mysql中“Insert into xxx on duplicate key update”問(wèn)題
- JDBC數(shù)據(jù)庫(kù)的使用操作總結(jié)
- MySQL 主主同步配置步驟
- 相關(guān)鏈接:
- 教程說(shuō)明:
Mssql數(shù)據(jù)庫(kù)教程-獲得SQL Server 2005中所有存儲(chǔ)過(guò)程的方法。