查看用户定义函数
在 SQL Server 2012 中,通过使用 SQL Server Management Studio 或 Transact-SQL 可以获取有关用户定义函数的定义或属性的信息。 您可能需要查看函数的定义,以理解其数据从源表中派生的方式或查看函数所定义的数据。
重要提示 |
---|
如果您更改函数所引用的对象的名称,则必须修改函数,使其文本反映新名称。 因此,在重命名对象前,首先显示该对象的依赖关系,以确定所建议的更改是否影响任何函数。 |
本主题内容
开始之前:
安全性
若要获取有关函数的信息,请使用:
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”对话框中显示以下属性。
数据库
包含此函数的数据库的名称。服务器
当前服务器实例的名称。用户
此连接的用户名。创建日期
显示函数的创建日期。执行身份
执行该函数的上下文。Name
当前函数的名称。架构
显示函数所属的架构。系统对象
指示该函数是否为系统对象。 值为 True 和 False。ANSI NULLs
指示创建对象时是否选择了 ANSI NULLs 选项。已加密
指示该函数是否已加密。 值为 True 和 False。函数类型
用户定义函数的类型。带引号的标识符
指示创建对象时是否选择了“带引号的标识符”选项。架构已绑定
指示该函数是否已绑定到架构。 值为 True 和 False。 有关绑定到架构的函数的信息,请参阅 CREATE FUNCTION (Transact-SQL) 的 SCHEMABINDING 部分。
[Top]
使用 Transact-SQL
获取函数的定义和属性
在**“对象资源管理器”**中,连接到数据库引擎实例。
在标准菜单栏上,单击**“新建查询”**。
将以下示例之一复制并粘贴到查询窗口中,然后单击**“执行”**。
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)。
获取函数的依赖关系
在**“对象资源管理器”**中,连接到数据库引擎实例。
在标准菜单栏上,单击**“新建查询”**。
将以下示例复制并粘贴到查询窗口中,然后单击**“执行”**。
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]