SQL Server 系統預存程序

來源:互聯網
上載者:User

Transact-SQL中的預存程序,非常類似於Java語言中的方法,它可以重複調用。當預存程序執行一次後,可以將語句緩衝在記憶體中,下次執行的時候直接使用緩衝中的語句。這樣就可以提高預存程序的效能。

Ø 預存程序的概念

    預存程序Procedure是一組為了完成特定功能的SQL語句集合,經編譯後儲存在資料庫中,使用者通過指定預存程序的名稱並給出參數來執行。

    預存程序中可以包含邏輯控制語句和資料操縱語句,它可以接受參數、輸出參數、返回單個或多個結果集以及傳回值。

    由於預存程序在建立時即在資料庫伺服器上進行了編譯並儲存在資料庫中,所以預存程序運行要比單個的SQL語句塊要快。同時由於在調用時只需用提供預存程序名和必要的參數資訊,所以在一定程度上也可以減少網路流量、簡單網路負擔。

    1、 預存程序的優點

        A、 預存程序允許標準組件式編程

        預存程序建立後可以在程式中被多次調用執行,而不必重新編寫該預存程序的SQL語句。而且資料庫專業人員可以隨時對預存程序進行修改,但對應用程式原始碼卻毫無影響,從而極大的提高了程式的可移植性。

        B、 預存程序能夠實現較快的執行速度

        如果某一操作包含大量的T-SQL語句代碼,分別被多次執行,那麼預存程序要比批處理的執行速度快得多。因為預存程序是先行編譯的,在首次運行一個預存程序時,查詢最佳化工具對其進行分析、最佳化,並給出最終被存在系統資料表中的儲存計劃。而批處理的T-SQL語句每次運行都需要先行編譯和最佳化,所以速度就要慢一些。

        C、 預存程序減輕網路流量

        對於同一個針對資料庫物件的操作,如果這一操作所涉及到的T-SQL語句被組織成一預存程序,那麼當在客戶機上調用該預存程序時,網路中傳遞的只是該調用語句,否則將會是多條SQL語句。從而減輕了網路流量,降低了網路負載。

        D、 預存程序可被作為一種安全機制來充分利用

        系統管理員可以對執行的某一個預存程序進行許可權限制,從而能夠實現對某些資料訪問的限制,避免非授權使用者對資料的訪問,保證資料的安全。

 

Ø 系統預存程序

    系統預存程序是系統建立的預存程序,目的在於能夠方便的從系統資料表中查詢資訊或完成與更新資料庫表相關的管理工作或其他的系統管理任務。系統預存程序主要儲存在master資料庫中,以“sp”底線開頭的預存程序。儘管這些系統預存程序在master資料庫中,但我們在其他資料庫還是可以調用系統預存程序。有一些系統預存程序會在建立新的資料庫的時候被自動建立在當前資料庫中。

    常用系統預存程序有:

-- 常用系統預存程序

exec sp_databases; // 查看資料庫

exec sp_tables; // 查看錶

exec sp_columns student; // 查看列

exec sp_helpIndex student; // 查看索引

exec sp_helpConstraint student; // 約束

exec sp_stored_procedures;

exec sp_helptext 'sp_stored_procedures'; // 查看預存程序建立、定義語句

exec sp_rename student, stuInfo; // 修改表、索引、列的名稱

exec sp_renamedb myTempDB, myDB; // 更改資料庫名稱

exec sp_defaultdb 'master', 'myDB'; // 更改登入名稱的預設資料庫

exec sp_helpdb; // 資料庫協助,查詢資料庫資訊

exec sp_helpdb master;

 

-- 表重新命名

exec sp_rename 'stu', 'stud';select * from stud;

-- 列重新命名

exec sp_rename 'stud.name', 'sName', 'column';

-- 重新命名索引

exec sp_rename N'student.idx_cid', N'idx_cidd', N'index';

-- 查詢所有預存程序

select * from sys.objects where type = 'P';

select * from sys.objects where type_desc like '%pro%' and name like 'sp%';

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.