Как называется SQL SP, который находит текстовую строку? - PullRequest
0 голосов
/ 22 октября 2009

Я очень смущен, но не могу вспомнить имя MS SQL Server SP, который ищет в вашей БД заданную текстовую строку и возвращает все имена таблиц, функций, хранимых процедур и т. Д., Которые содержат эту строку. И я не могу найти его в справке, потому что для того, чтобы получить помощь по нему, вам нужно знать его имя! Это было что-то вроде sp_findtext.

Как это называется?

Давай, самые быстрые пальцы получат ответ! :)

Ответы [ 3 ]

2 голосов
/ 22 октября 2009

С http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=32319

CREATE PROCEDURE sp_FindText @text varchar(8000), @findtype varchar(1)='P' AS
SET NOCOUNT ON
IF @findtype='P' SELECT DISTINCT Len(SubString(text,1, PatIndex('%' + @text + '%', text)))-Len(Replace(SubString(text,1, PatIndex('%' + @text + '%', text)),char(13),''))+1 AS Line,
--PatIndex('%' + @text + '%', text) AS Position,
OBJECT_NAME(id) AS ProcName
FROM syscomments
WHERE text like '%' + @text + '%'
ORDER BY ProcName, Line

IF @findtype='C' EXEC('SELECT TABLE_NAME + ''.'' + COLUMN_NAME AS TableColumn FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME LIKE ''%' + @text + '%'' ORDER BY TableColumn')

IF @findtype='T' EXEC('SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE ''%' + @text + '%'' ORDER BY TABLE_NAME')
GO

Он не только ищет процедуру и текст определения представления, но также находит таблицы, представления и имена столбцов:

EXEC sp_FindText 'myTable' --or-- EXEC sp_FindText 'myTable', 'P' --finds procedures/views containing 'myTable' in their definition/code
EXEC sp_FindText 'myTable', 'T' --finds tables/views containing 'myTable' in their name
EXEC sp_FindText 'myCol', 'C' --finds columns containing 'myCol' in their name
2 голосов
/ 22 октября 2009

Я нашел пользовательский SP (FindTextInDatabase), который делает именно это:

http://geekswithblogs.net/ram/archive/2007/05/22/112672.aspx

Не знаю, есть ли готовая процедура. Если он есть, я тоже его не найду.

0 голосов
/ 22 октября 2009

Быстро проверьте результаты этих:

select * from sysobjects where [name] like 'sp_%' order by 1
select * from master..sysobjects where [name] like 'sp_%' order by 1

Вы находите, что это для вас.

ура!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...