Поделиться через


Просмотр определяемых пользователем функций

Получить сведения об определении или свойствах определяемой пользователем функции в SQL Server 2012 можно с помощью среды Среда SQL Server Management Studio или Transact-SQL. Возможность просмотреть определение функции может понадобиться, чтобы понять, как его данные извлекаются из исходных таблиц, или чтобы увидеть данные, определенные функцией.

Важное примечаниеВажно!

Если имя объекта, на который ссылается функция, было изменено, необходимо изменить функцию так, чтобы в ее тексте использовалось новое имя. Поэтому, прежде чем переименовать объект, отобразите список его зависимостей, чтобы определить, отразится ли планируемое изменение на каких-либо функциях.

В этом разделе

  • Перед началом работы выполните следующие действия.

    Безопасность

  • Для получения сведений о функции используется:

    Среда SQL Server Management Studio

    Transact-SQL

Перед началом

Безопасность

Разрешения

Для использования sys.sql_expression_dependencies в поиске всех зависимостей функции необходимо разрешение VIEW DEFINITION на базу данных и разрешение SELECT на представление sys.sql_expression_dependencies для базы данных. Определения системных объектов, например полученные в OBJECT_DEFINITION, видимы для всех.

Значок стрелки, используемый со ссылкой «В начало»[Top]

Использование среды SQL Server Management Studio

Отображение свойств определяемой пользователем функции

  1. В обозревателе объектов щелкните знак «плюс» рядом с базой данных, содержащей функцию, свойства которой необходимо просмотреть, а затем щелкните знак «плюс», чтобы развернуть папку Программирование.

  2. Чтобы развернуть папку Функции, щелкните знак «плюс» (+).

  3. Щелкните знак «плюс», чтобы развернуть папку, содержащую функцию, для которой нужно просмотреть свойства.

    • Функция с табличным значением

    • Скалярная функция

    • Агрегатная функция

  4. Щелкните правой кнопкой мыши функцию, свойства которой необходимо просмотреть, и выберите пункт Свойства.

    Следующие свойства отображаются в диалоговом окне Свойства функции — function_name.

    • База данных
      Имя базы данных, содержащей эту функцию.

    • Сервер
      Имя текущего экземпляра сервера.

    • Пользователь
      Имя пользователя для данного соединения.

    • Дата создания
      Дата создания функции.

    • Выполнить от имени
      Контекст выполнения для функции.

    • Название
      Имя текущей функции.

    • Схема
      Схема, которой принадлежит функция.

    • Системный объект
      Указывает принадлежность функции к системным объектам. Возможные значения: True и False.

    • ANSI NULL
      Указывает, был ли объект создан с параметром ANSI NULL.

    • Зашифрована
      Указывает, зашифрована ли функция. Возможные значения: True и False.

    • Тип функции
      Тип определяемой пользователем функции.

    • Заключенный в кавычки идентификатор
      Показывает, был ли объект создан с параметром «заключенный в кавычки идентификатор».

    • Привязка к схеме
      Указывает, привязана ли функция к схеме. Возможные значения: True и False. Дополнительные сведения о функциях, привязанных к схеме, см. в подразделе SCHEMABINDING раздела CREATE FUNCTION (Transact-SQL).

Значок стрелки, используемый со ссылкой «В начало»[Top]

Использование Transact-SQL

Получение определения и свойств функции

  1. В обозревателе объектов установите соединение с экземпляром компонента Компонент Database Engine.

  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. В обозревателе объектов установите соединение с экземпляром компонента Компонент Database Engine.

  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]