Просмотр определяемых пользователем функций
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure
Вы можете получить сведения об определении или свойствах определяемой пользователем функции в SQL Server с помощью SQL Server Management Studio или Transact-SQL. Возможность просмотреть определение функции может понадобиться, чтобы понять, как его данные извлекаются из исходных таблиц, или чтобы увидеть данные, определенные функцией.
Если имя объекта, на который ссылается функция, было изменено, необходимо изменить функцию так, чтобы в ее тексте использовалось новое имя. Поэтому, прежде чем переименовать объект, отобразите список его зависимостей, чтобы определить, отразится ли планируемое изменение на каких-либо функциях.
Разрешения
Для sys.sql_expression_dependencies
поиска всех зависимостей от функции требуется разрешение VIEW DEFINITION для базы данных и разрешение sys.sql_expression_dependencies
SELECT для базы данных. Определения системных объектов, например полученные в OBJECT_DEFINITION, видимы для всех.
Использование SQL Server Management Studio
Отображение свойств определяемой пользователем функции
В обозреватель объектов выберите знак плюса рядом с базой данных, содержащей функцию, в которую вы хотите просмотреть свойства, а затем выберите знак плюса, чтобы развернуть папку Programmability.
Выберите знак "плюс", чтобы развернуть папку "Функции ".
Выберите знак плюса, чтобы развернуть папку, содержащую функцию, в которую вы хотите просмотреть свойства:
- Table-valued Function
- Скалярная функция
- Агрегатная функция
Щелкните правой кнопкой мыши функцию, свойства которой необходимо просмотреть, и выберите пункт Свойства.
Следующие свойства отображаются в диалоговом окне Свойства функции — имя_функции.
Имя функции Description База данных Имя базы данных, содержащей эту функцию. Сервер Имя текущего экземпляра сервера. User Имя пользователя этого соединения. Дата создания Дата создания функции. Выполнить как Контекст выполнения для функции. Имя. Имя текущей функции. Схема Схема, которой принадлежит функция. Системный объект Указывает принадлежность функции к системным объектам. Значения: True
иFalse
.Значения NULL по стандарту ANSI Указывает, был ли объект создан с параметром ANSI NULL. Encrypted Указывает, зашифрована ли функция. Значения: True
иFalse
.Тип функции Тип определяемой пользователем функции. Заключенный в кавычки идентификатор Показывает, был ли объект создан с параметром «заключенный в кавычки идентификатор». Привязка к схеме Указывает, привязана ли функция к схеме. Возможные значения: True и False. Сведения о функциях, связанных с схемой, см. в разделе SCHEMABINDING CREATE FUNCTION (Transact-SQL).
Использование Transact-SQL
Получение определения и свойств функции
В обозреватель объектов подключитесь к экземпляру ядро СУБД.
На стандартной панели выберите пункт Создать запрос.
Скопируйте один из следующих примеров и вставьте его в окне запроса, а затем нажмите Выполнить.
В следующем примере кода возвращается имя функции, определение и соответствующие свойства.
USE AdventureWorks2022; 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
В следующем примере кода возвращается определение примера функции
dbo.ufnGetProductDealerPrice
.USE AdventureWorks2022; 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 AdventureWorks2022; 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).