Мне когда-то были нужны строки хранимых процедур, чтобы смочь проследить, есть ли у меня ссылка на некоторую функцию, процедуру или таблицу, или иногда пытаться найти что-то в коде SP.
Где SQL Server хранит код процедуры?
Используйте sys.sql_modules
, потому что определение
равно nvarchar (max)
, потому что оно будет не обрезать длинный код.
В INFORMATION_SCHEMA.ROUTINES
столбец ROUTINE_DEFINITION
содержит только nvarchar (4000)
, поэтому, если вы попытаетесь просмотреть текст длинной процедуры, вы увидите, что он усечен.
Используйте это для поиска текста в любой процедуре, представлении, функции:
SELECT DISTINCT
o.name AS Object_Name,o.type_desc
FROM sys.sql_modules m
INNER JOIN sys.objects o ON m.object_id=o.object_id
WHERE m.definition Like '%'+@Search+'%'
ORDER BY 2,1
используйте это, чтобы просмотреть текст данной процедуры, представления, функции:
select * from sys.sql_modules where object_id=object_id('YourProcedure')
Если вы пытаетесь найти ссылки на другие объекты, вы можете выполнить такой запрос:
SELECT * FROM syscomments WHERE TEXT LIKE '% searchstring%'
Это вернет все объекты в базе данных, которые ссылаются на строку поиска. Затем вы можете посмотреть на эти объекты, чтобы увидеть, какие хранимые процедуры (а также представления и функции) делают это.
Если вы используете SQL Server Management Studion, вы можете щелкнуть правой кнопкой мыши нужную базу данных, а затем выбрать «Задачи -> Создать сценарии».
Здесь вы можете сгенерировать сценарий со всеми SP в одном файле, в отдельных файлах или прямо в окне запроса и искать / изменять то, что вы хотите.
Надеюсь, это поможет.
(это для SQL Server 2008, но я думаю, что 2005 тоже имеет эту функциональность)
РЕДАКТИРОВАТЬ:
Вы также можете увидеть один единственный код SP, пройдя по этому пути «YourDB -> Программируемость -> Хранимые процедуры» ", затем щелкните правой кнопкой мыши SP, который вы хотите увидеть, и нажмите" Изменить ", и откроется окно запроса с кодом.
Если вы просто пытаетесь просмотреть код хранимых процедур, зайдите в папку progammabiltity в вашей БД, и все они должны храниться там в разделе хранимых процедур.
Он хранил его в таблицах системной схемы:
SELECT * FROM INFORMATION_SCHEMA.ROUTINES
См. MSDN о представлении INFORMATION_SCHEMA.ROUTINES
:
ms-help://MS.SQLCC.v10/MS.SQLSVR.v10.en/s10de_6tsql/html/c75561b2-c9a1-48a1-9afa-a5896b6454cf.htm
поиск по этому поводу, вы можете сделать следующее:
SELECT * FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_DEFINITION LIKE '%search_string%'
Просмотр зависимостей
В SQL Server Management Studio щелкните правой кнопкой мыши таблицу и выберите «Просмотр зависимостей». Вы увидите каждый объект, который ссылается на таблицу
INFORMATION_SCHEMA
Фактический код для сохраненной процедуры, представления, ограничения и т.д. хранится в SysComments
. Вы должны запросить это, используя представления, представленные в схеме Information_Schema
. Вот все компоненты Information_Schema .