Запрос на возврат внутренних сведений о сохраненной функции в базе данных SQL Server
Мне был предоставлен доступ к базе данных SQL Server, которая в настоящее время используется сторонним приложением. Поэтому у меня нет документации о том, как это приложение хранит данные или как оно их извлекает.
Я могу кое-что выяснить, основываясь на именах различных таблиц и параметрах, которые пользовательские функции принимают и возвращают, но я все равно получаю ошибки при каждом другом повороте.
Я подумал, что было бы действительно полезно, если бы я мог видеть, что делают хранимые функции с параметрами, заданными для возврата вывода. Прямо сейчас все, что мне удалось выяснить, это как запросить входные параметры и выходные столбцы.
Есть ли встроенный information_schema
таблица, которая будет показывать, что функция делает между вводом и выводом?
3 ответа
Если вы можете каким-либо образом выполнить запрос к вашей базе данных и если у вас есть необходимые разрешения для чтения представлений системного каталога, то вы можете выполнить этот запрос, чтобы получить имя, определение (код SQL) и еще немного информации о ваши функции:
SELECT
obj.name ,
obj.type ,
obj.type_desc ,
obj.create_date ,
obj.modify_date ,
m.definition ,
m.is_schema_bound
FROM
sys.objects obj
INNER JOIN
sys.sql_modules m ON obj.object_id = m.object_id
WHERE
obj.type IN ('AF', 'FN', 'FS', 'FT', 'IF', 'TF')
При наличии соответствующих разрешений вы можете просто написать сценарий для всех хранимых процедур и функций:
Щелкните правой кнопкой мыши базу данных в SSMS (SQL Server Management Studio), выберите "Задачи" -> "Создать сценарии", убедитесь, что база данных выделена, и нажмите "Далее". Убедитесь, что выбраны параметры для сценариев хранимых процедур и функций.
Вы можете установить SSMS (инструменты клиента), не требуя лицензии SQL Server.
Другой способ sp_helptext
который покажет вам источник переданного SP или UDF;
sp_helptext fnBlaDeBla