2009-04-08 154 views
2

我今天剛剛遇到系統視圖sys.sql_modules。什麼是模塊與數據庫對象?該視圖最顯着地返回包含定義文本的列,由sys.syscomments返回。什麼是SQL Server模塊?

回答

4

這是T-SQL語句組成一個存儲過程,存儲函數,觸發器或視圖定義的塊。

獲取有關存儲 過程要顯示的Transact-SQL存儲過程的定義 , 使用sys.sql_modules目錄視圖:

的「CREATE PROCEDURE」部分中

從「聯機叢書」 存在於其中存在過程 的數據庫中。

在sys.sql_modules中,您會找到實際的T-SQL代碼。

馬克

1

模塊是函數,過程,隊列和觸發器。這些模塊調用對象。這就是我從這篇文章中描述「EXECUTE AS」理解爲:

EXECUTE AS

+0

正是那個頁面導致我首先問我的問題。它告訴我,數據庫中有各種模塊。我一直都知道DB中有各種對象。從哪裏'模塊'? – ProfK 2009-04-08 18:56:53

3

所述的模塊,SQL-Server的講是一個獨立的對象,其中包含SQL批次,如視圖,表值函數,存儲過程,觸發器或標量函數。 SQL對象是一個更全面的術語,包括一些包含SQL表達式的術語,例如檢查或默認約束。一個模塊在SQL Server 2005之前被稱爲「例程」,但我認爲這兩個術語可以互換使用。

表格構建腳本不存儲在SQL Server中,因爲表格的組件可以輕鬆地單獨更改。因此它被視爲一個對象而不是一個模塊。
不被認爲是模塊的典型對象是系統表,缺省約束,外鍵約束,服務隊列,檢查約束,用戶表,主鍵約束,內部表和唯一約束。

列不被視爲對象。索引也沒有。

是的,它比人們想象的要複雜得多。