tima: (Default)
[personal profile] tima
Есть у меня колонка по имени bundle в одной таблице. Мне надо прошерстить все остальные таблицы и views, чтобы узнать не используется ли эта колонка в них в where clause, как условие для чего-либо.

Пытался поискать в гугле как это сделать - ничего внятного. Может есть SQL Server системная таблица, аналогичная sys.tables, sys.columns, но в которой не имена таблиц и колонок, а where clauses хранятся?

Если такой нет, то как бы сделать поиск, чтобы обнаружить эти where clauses?

Спасибо за ответы.

P.S. Таблиц тысячи

P.P.S. Фильтр с "Schema" "Contains" "Bundle" - не находит ничего, даже в селектах, хотя я точно знаю, что такие таблицы и views имеются.

Date: 2018-01-09 04:20 pm (UTC)
brmail: (Default)
From: [personal profile] brmail
что то типа :

SELECT DISTINCT a.[name]
FROM sysobjects a
INNER JOIN syscomments b on a.id = b.id
WHERE UPPER(b.[text]) LIKE '%INSTITUTIONMAP.INSTITUTIONID%'

причем если ты откроешь вью по правому клику - Design, то там в Where условие будет в виде :
AND (dbo.InstitutionMap.InstitutionId IS NOT NULL)

так вот поиск по '%dbo.InstitutionMap.InstitutionId%' ничего не принесет. Стоит смотреть в скрипте на создание этого вью - там будет именно так как оно в тексте sysobjects - для моего примера:
'AND InstitutionMap.InstitutionId IS NOT NULL'


Date: 2018-01-09 04:23 pm (UTC)
brmail: (Default)
From: [personal profile] brmail
а, еще вспомнил одно - для селекта из
sysobjects & syscomments нужны определенные права. Если их нет, то возможно ты просто получишь ничего в результате - те типа поискали и ничего не нашли.
Сперва посмотри есть ли у тебя что то в результате исполнения :
SELECT a.[name], b.[text]
FROM sysobjects a
INNER JOIN syscomments b on a.id = b.id

Date: 2018-01-09 04:40 pm (UTC)
From: [personal profile] gb0
Попробуйте на вьюхи по очереди натравить sp_helptext с параметром в виде имени вьюхи. Ну или посмотрите на sp_helptext от sp_helptext как они это делают (около 200 строк). Получают текстовое описание любой хранимки, вьюхи и тд. Там raisят exception на таблицу, но это можно починить в своей версии працiдурки.
Edited Date: 2018-01-09 04:45 pm (UTC)

Date: 2018-01-09 04:50 pm (UTC)
From: [personal profile] gb0
А если свежий сервер, то там можно

SELECT definition FROM sys.sql_modules WHERE object_id = OBJECT_ID('some_view')

делать, и искать уже что-то совсем сложное. Хотя конкретно Ваша задача-то – пойди уже и решена :)

Profile

tima: (Default)
tima

July 2025

S M T W T F S
   1 2 3 45
6 7 8 9 10 1112
13141516171819
20212223242526
2728293031  

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 19th, 2025 11:38 pm
Powered by Dreamwidth Studios