Запрос на возврат внутренних сведений о сохраненной функции в базе данных 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

Другие вопросы по тегам