查看用户定义函数

可以使用 SQL Server Management Studio 或 Transact-SQL 获取有关 SQL Server 2014 中用户定义函数的定义或属性的信息。 您可能需要查看函数的定义,以理解其数据从源表中派生的方式或查看函数所定义的数据。

重要

如果您更改函数所引用的对象的名称,则必须修改函数,使其文本反映新名称。 因此,在重命名对象前,首先显示该对象的依赖关系,以确定所建议的更改是否影响任何函数。

本主题内容

开始之前

安全性

权限

使用 sys.sql_expression_dependencies 查找函数的依赖关系要求对该数据库具有 VIEW DEFINITION 权限,以及对数据库具有 sys.sql_expression_dependencies 的 SELECT 权限。 系统对象定义(如 OBJECT_DEFINITION 中返回的对象定义)是公开可见的。

使用 SQL Server Management Studio

显示用户定义函数的属性

  1. “对象资源管理器”中,单击包含要查看属性的函数的数据库旁边的加号,然后单击加号以展开 “可编程性” 文件夹。

  2. 单击加号以便展开 “函数” 文件夹。

  3. 单击加号以展开包含您要查看属性的函数的文件夹:

    • 表值函数

    • 标量值函数

    • Aggregate 函数

  4. 右键单击要查看其属性的函数,然后选择“属性”

    “函数属性 - function_name”对话框中将显示以下属性

    数据库
    包含此函数的数据库的名称。

    服务器
    当前服务器实例的名称。

    用户
    此连接的用户名。

    创建日期
    显示函数的创建日期。

    执行身份
    执行该函数的上下文。

    名称
    当前函数的名称。

    架构
    显示函数所属的架构。

    系统对象
    指示该函数是否为系统对象。 值为 True 和 False。

    ANSI NULL 值
    指示创建对象时是否选择了 ANSI NULLs 选项。

    已加密
    指示该函数是否已加密。 值为 True 和 False。

    函数类型
    用户定义函数的类型。

    带引号的标识符
    指示创建对象时是否选择了“带引号的标识符”选项。

    架构已绑定
    指示该函数是否已绑定到架构。 值为 True 和 False。 有关绑定到架构的函数的信息,请参阅 CREATE FUNCTION (Transact-SQL) 的 SCHEMABINDING 一节。

“使用 Transact-SQL”

获取函数的定义和属性

  1. “对象资源管理器” 中,连接到 数据库引擎的实例。

  2. 在标准菜单栏上,单击 “新建查询”

  3. 将以下示例之一复制并粘贴到查询窗口中,然后单击 “执行”

    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)

获取函数的依赖关系

  1. “对象资源管理器” 中,连接到 数据库引擎的实例。

  2. 在标准菜单栏上,单击 “新建查询”

  3. 将以下示例复制并粘贴到查询窗口中,然后单击“执行” 。

    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)