檢視使用者定義函數
您可以使用 SQL Server Management Studio 或 Transact-SQL,取得 SQL Server 2012 中使用者定義函數之定義或屬性的相關資訊。 您可能需要查看函數的定義才能了解如何從來源資料表衍生出資料;或是查看函數所定義的資料。
重要事項 |
---|
如果變更函數所參考的物件名稱,就必須修改該函數,使其文字反映新的名稱。 因此,在改變物件名稱時,首先要檢視此物件的相依性以了解是否有相關的函數受到影響。 |
本主題內容
開始之前:
安全性
使用下列方法取得函數的相關資訊:
SQL Server Management Studio
Transact-SQL
開始之前
安全性
權限
若要使用 sys.sql_expression_dependencies 尋找函數的所有相依性,需要資料庫的 VIEW DEFINITION 權限以及資料庫之 sys.sql_expression_dependencies 的 SELECT 權限。 系統物件定義是公開可見的,就像 OBJECT_DEFINITION 中傳回的定義一樣。
[Top]
使用 SQL Server Management Studio
若要顯示使用者定義函數的屬性
在 [物件總管] 中,按一下資料庫旁邊的加號,此資料庫包含您要查看其屬性的函數,然後按一下加號展開 [可程式性] 資料夾。
按一下加號展開 [函數] 資料夾。
按一下加號展開包含您要檢視其屬性之函數的資料夾:
資料表值函式
純量值函式
彙總函式
以滑鼠右鍵按一下要查看其屬性的函數,然後選取 [屬性]。
下列屬性會出現在 [函數屬性 – function_name] 對話方塊中。
資料庫
包含此函數之資料庫的名稱。伺服器
目前伺服器執行個體的名稱。使用者
這個連接之使用者的名稱。建立日期
顯示建立函數的日期。執行身分
函數的執行內容。名稱
目前函數的名稱。結構描述
顯示擁有函數的結構描述。系統物件
指出函數是否為系統物件。 值為 True 與 False。ANSI NULLS
指出物件是否使用 ANSI NULLS 選項建立。已加密
指出函數是否加密。 值為 True 與 False。函數類型
使用者定義函數的類型。引號識別碼
指出物件是否使用引號識別碼選項建立。結構描述繫結
指出函數是否為結構描述繫結函數。 值為 True 與 False。 如需有關結構描述繫結函數的詳細資訊,請參閱<CREATE FUNCTION (Transact-SQL)>的<SCHEMABINDING>一節。
[Top]
使用 Transact-SQL
若要取得函數定義和屬性
在 [物件總管] 中,連接到 Database Engine 的執行個體。
在標準列上,按一下 [新增查詢]。
將下列其中一個範例複製並貼到查詢視窗中,然後按一下 [執行]。
USE AdventureWorks2012; GO -- Get the function name, definition, and relevant properties SELECT sm.object_id, OBJECT_NAME(sm.object_id) AS object_name, o.type, o.type_desc, sm.definition, sm.uses_ansi_nulls, sm.uses_quoted_identifier, sm.is_schema_bound, sm.execute_as_principal_id -- using the two system tables sys.sql_modules and sys.objects FROM sys.sql_modules AS sm JOIN sys.objects AS o ON sm.object_id = o.object_id -- from the function 'dbo.ufnGetProductDealerPrice' WHERE sm.object_id = OBJECT_ID('dbo.ufnGetProductDealerPrice') ORDER BY o.type; GO USE AdventureWorks2012; GO -- Get the definition of the function dbo.ufnGetProductDealerPrice SELECT OBJECT_DEFINITION (OBJECT_ID('dbo.ufnGetProductDealerPrice')) AS ObjectDefinition; GO
如需詳細資訊,請參閱<sys.sql_modules (Transact-SQL)>和<OBJECT_DEFINITION (Transact-SQL)>。
若要取得函數的相依性
在 [物件總管] 中,連接到 Database Engine 的執行個體。
在標準列上,按一下 [新增查詢]。
將下列範例複製並貼到查詢視窗中,然後按一下 [執行]。
USE AdventureWorks2012; GO -- Get all of the dependency information SELECT OBJECT_NAME(sed.referencing_id) AS referencing_entity_name, o.type_desc AS referencing_desciption, COALESCE(COL_NAME(sed.referencing_id, sed.referencing_minor_id), '(n/a)') AS referencing_minor_id, sed.referencing_class_desc, sed.referenced_class_desc, sed.referenced_server_name, sed.referenced_database_name, sed.referenced_schema_name, sed.referenced_entity_name, COALESCE(COL_NAME(sed.referenced_id, sed.referenced_minor_id), '(n/a)') AS referenced_column_name, sed.is_caller_dependent, sed.is_ambiguous -- from the two system tables sys.sql_expression_dependencies and sys.object FROM sys.sql_expression_dependencies AS sed INNER JOIN sys.objects AS o ON sed.referencing_id = o.object_id -- on the function dbo.ufnGetProductDealerPrice WHERE sed.referencing_id = OBJECT_ID('dbo.ufnGetProductDealerPrice'); GO
如需詳細資訊,請參閱<sys.sql_expression_dependencies (Transact-SQL)>和<sys.objects (Transact-SQL)>。
[Top]