Где SQL Server хранит код хранимой процедуры?

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

Где SQL Server хранит код процедуры?

21
задан That1Guy 3 March 2016 в 18:02
поделиться

6 ответов

Используйте 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')
35
ответ дан 29 November 2019 в 20:24
поделиться

Если вы пытаетесь найти ссылки на другие объекты, вы можете выполнить такой запрос:

SELECT * FROM syscomments WHERE TEXT LIKE '% searchstring%'

Это вернет все объекты в базе данных, которые ссылаются на строку поиска. Затем вы можете посмотреть на эти объекты, чтобы увидеть, какие хранимые процедуры (а также представления и функции) делают это.

1
ответ дан 29 November 2019 в 20:24
поделиться

Если вы используете SQL Server Management Studion, вы можете щелкнуть правой кнопкой мыши нужную базу данных, а затем выбрать «Задачи -> Создать сценарии».

Здесь вы можете сгенерировать сценарий со всеми SP в одном файле, в отдельных файлах или прямо в окне запроса и искать / изменять то, что вы хотите.

Надеюсь, это поможет.

(это для SQL Server 2008, но я думаю, что 2005 тоже имеет эту функциональность)

РЕДАКТИРОВАТЬ:

Вы также можете увидеть один единственный код SP, пройдя по этому пути «YourDB -> Программируемость -> Хранимые процедуры» ", затем щелкните правой кнопкой мыши SP, который вы хотите увидеть, и нажмите" Изменить ", и откроется окно запроса с кодом.

0
ответ дан 29 November 2019 в 20:24
поделиться

Если вы просто пытаетесь просмотреть код хранимых процедур, зайдите в папку progammabiltity в вашей БД, и все они должны храниться там в разделе хранимых процедур.

0
ответ дан 29 November 2019 в 20:24
поделиться

Он хранил его в таблицах системной схемы:

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%'
3
ответ дан 29 November 2019 в 20:24
поделиться

Просмотр зависимостей

В SQL Server Management Studio щелкните правой кнопкой мыши таблицу и выберите «Просмотр зависимостей». Вы увидите каждый объект, который ссылается на таблицу

INFORMATION_SCHEMA

Фактический код для сохраненной процедуры, представления, ограничения и т.д. хранится в SysComments . Вы должны запросить это, используя представления, представленные в схеме Information_Schema . Вот все компоненты Information_Schema .

1
ответ дан 29 November 2019 в 20:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: