查看用户定义函数

在 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

显示用户定义函数的属性

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

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

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

    • 表值函数

    • 标量值函数

    • 聚合函数

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

    在**“函数属性 –** function_name”对话框中显示以下属性。

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

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

    • 用户
      此连接的用户名。

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

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

    • Name
      当前函数的名称。

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

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

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

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

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

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

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

用于“返回首页”链接的箭头图标[Top]

使用 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)

用于“返回首页”链接的箭头图标[Top]