Re: MSSQL - есть ли такая конструкция | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
А для поиска произвольного текста "во всех текстовых полях всех таблиц" Ну писать специальную программу для вышеозначенных целей это IMHO перебор будет А в качестве "отладочного/интерактивного" кода (не для целей встраивания в программу) почему бы и нет? Как раз для таких целей (изучение БД как "чёрного ящика") вполне применимы такого рода скрипты. ------------------ WBR, Igor |
Re: MSSQL - есть ли такая конструкция | |
---|---|
ssa Сообщений: 13008 Откуда: Москва Дата регистрации: 23.03.2005 |
И для этого тоже. Цитата:Лучше научиться правильно разделять код между клиентом и сервером. ------------------ Лень - это неосознанная мудрость. |
Re: MSSQL - есть ли такая конструкция | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Что такое "Клиенты" в данном контексте? Можно пример какого либо "Клиента"? Microsoft SQL Server Managment Studio является таким клиентом? А какой тогда код эффективен? Можно ссылку? Имеется ввиду "машинное время" (время работы компьютера)? Исправлено 1 раз(а). Последнее : S-type, 05.07.16 17:29 |
Re: MSSQL - есть ли такая конструкция | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Да, именно так - цель была (и есть), изучить БД программы, что бы перелить туда данные, а в дальнейшем (возможно) обеспечить синхронизацию с другими программами. Ни как не могу понять, о чём Вы. Мне не надо писать приложение "с нуля" или переписывать уже готовое. Программа есть, она работает (по крайней мере, другие ей пользуются). Скрипт нужен только для изучения БД. |
Re: MSSQL - есть ли такая конструкция | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Вот, кстати, итоговый скрипт.
Буду признателен, если кто то покритикует код. |
Re: MSSQL - есть ли такая конструкция | |
---|---|
ssa Сообщений: 13008 Откуда: Москва Дата регистрации: 23.03.2005 |
1. Велосипед уже изобретен. И даже не очень сильно отличается от твоего творения. Тут
2. В обоих вариантах получение списка всех нужных полей из всех таблиц можно выполнить одним запросом к information_schema.columns и даже без джойнов. 3. В обоих случаях может оказаться значительно эффективней не выполнять сразу же сгенеренную строку команды, а накопить их все в один пакет и уже его в конце отправить на выполнение. ------------------ Лень - это неосознанная мудрость. |
Re: MSSQL - есть ли такая конструкция | |
---|---|
ssa Сообщений: 13008 Откуда: Москва Дата регистрации: 23.03.2005 |
А еще эффективней будет сгенерить этот пакет один раз и параметризовать его. При этом при генерации не нужен будет курсор, sqlexec и т.д.
------------------ Лень - это неосознанная мудрость. |
Re: MSSQL - есть ли такая конструкция | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Ну так по сути тот же код - только там он НЕ параметризован (тут параметризован на уровне динамически выполняемой команды) плюс пользует временную таблицу. Да, там он решает чуть другую задачу - поиск ВСЕХ подходящих записей (точнее полей - но это не суть важно), а тут более примитивную - поиск таблиц где есть подходящие записи
Про эффективность такого рода кода я бы особо париться не стал - это не критичный по времени запрос. Хотя, справедливости ради, в том же оракле иногда я делаю именно простой запрос генерирующий "простыню" кода (используя spool можно это сразу запихать в новый sql файл), а потом банально этот сгенерированный код и запускаю ------------------ WBR, Igor |
Re: MSSQL - есть ли такая конструкция | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Хм... При всём моём уважении к Вам, Всё равно Вашу мысль не пойму. Ладно бы ссылка была на foxclub.ru, а то на какой то внешний сайт. К тому же, хочется научиться программы писать, а не получить навык "хорошо умею гуглить". Join это зло, которого надо избегать? Глубоко сомневаюсь. Или, information_schema.columns даёт какой то иной результат, чем поиск с помощью syscolumns и sysobjects? Или, syscolumns и sysobjects устарели и не рекомендуются MS к использованию? В чём соль? Для решения задачи "запрыгнуть в движущийся поезд" не надо вычислять идеальную траекторию своего движения (т.е. не надо сидеть на перроне вычисляя скорость поезда, вес чемоданов, длину перрона и расположение на перроне столбов и ларьков). Надо быстро схватить чемодан и как можно быстрее бежать к поезду. Что бы найти, в какой таблице хранится то или иное значение, не обязательно перерывать весь интернет, не нужно писать идеальный запрос (оптимальный с любой точки зрения). Достаточно "на коленке" набросать скрипт и выполнить его пару-тройку раз. И, в следующий раз придётся вернуться к этому скрипту через год, а может и через три. К тому моменту возможно это будет уже другая СУБД и другой язык, но общий алгоритм будет тот же. Не нужно мне "пакет" Исправлено 1 раз(а). Последнее : S-type, 06.07.16 08:59 |
Re: MSSQL - есть ли такая конструкция | |
---|---|
Аспид Сообщений: 3475 Откуда: Москва Дата регистрации: 01.04.2005 |
Интересно)))
Конечно никто не знает, что конкретно тебе надо. Но, если это на 1 раз, то какая разница какой код. Если ты пытаешься анализировать базу, по ее содержимому, то возможно, тебе по многим словам придется искать. И совет, сгенерировать, пусть и огромный скрипт, с параметром, а потом забыть о его содержимом, а просто запускать... кажется очень разумным, и вызывает недоумение возмущения)))) ------------------ |
Re: MSSQL - есть ли такая конструкция | |
---|---|
ssa Сообщений: 13008 Откуда: Москва Дата регистрации: 23.03.2005 |
Пошли отмазы капризного ребенка во время истерики... Всего хорошего.
------------------ Лень - это неосознанная мудрость. |
Re: MSSQL - есть ли такая конструкция | |
---|---|
Влад Колосов Сообщений: 22664 Откуда: Ростов-на-Дону Дата регистрации: 05.05.2005 |
Вообще исследование содержимого базы и методы взлома - наверное не для этого форума
------------------ Совершенство - это не тогда, когда нельзя ничего прибавить, а тогда, когда нечего убавить. |
Re: MSSQL - есть ли такая конструкция | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Ну так в результате поисков и находятся "хорошие решения" которые ты потом будешь применять в своей работе Правда, отделить зёрна от плевел ой как непросто... Внутри системных представлений в любом случае будут использоваться join-ы - и даже много больше чем хотелось бы. Но лазить из-за этого напрямую к системным таблицам не есть хорошо (в том же оракле у обычного пользователя и прав то нет чтобы напрямую к системным таблицам обращаться - только через представления и то не все будут доступны... Между представлением information_schema.columns и другими системными представлениями реально есть разница. Например в том какие "поля" отбрасываются (сам ведь в where дописал подобные условия), какие дополнительно системные таблицы прицепляются (порой это полезно, а порой не нужно и лишь мешает замедляя запрос)... Конкретно syscolumns является устаревшим объектом (и уже даже не системной таблицей, а тоже системным представлением) sys.columns является рекомендованной заменой - но, опять же, и представления из information_schema вполне себе "рекомендуются лучшими собаководами" Иногда "лучше день потерять, а потом за 5 минут долететь" Одно дело 3 раза запускать подобный "поисковик", и другое 100 раз это же делать - при том над многогигабайтной БД. Одно дело статичная БД (где структуры не меняются сами собой) и другое - "ужас одмина", где на лету создаются и удаляются тыщи таблиц/полей Так что в совете сделать из этой функции не "исполнитель динамических запросов" а лишь генератор скрипта для последующего его [скрипта] многократного исполнения есть практический смысл... ------------------ WBR, Igor |
Re: MSSQL - есть ли такая конструкция | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Как то неадекватно... Искренне пытался понять - что Вы хотели мне сказать - видимо, не дорос. К тому же, постоянно задавал конкретные вопросы... которые Вы успешно игнорировали. |
Re: MSSQL - есть ли такая конструкция | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Золотые слова, Юрий Бенедиктович (C) Наша Раша. Понял, подправлю запрос. Очень даже помню, чем этот мультфильм закончился Безусловно, смысл есть. Так же, есть смысл и в том, что "решение должно быть адекватно поставленной задаче". В данном задача одноразовая, база маленькая (пока). |
Re: MSSQL - есть ли такая конструкция | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Предлагаю считать вопрос закрытым.
Коллеги, всем спасибо за оперативную помощь. Отдельное спасибо PaulWist и Igor Korolyov. Исправлено 1 раз(а). Последнее : S-type, 06.07.16 16:09 |
Re: MSSQL - есть ли такая конструкция | |
---|---|
Гулин Федор Сообщений: 4640 Откуда: Минск Дата регистрации: 24.10.2002 |
зы про information_schema.columns
золотые слова зы а еще можно включить скл-профайлер - настроить и глянуть какие запросы идут из апликейшена - черного ящика |
Re: MSSQL - есть ли такая конструкция | |
---|---|
ssa Сообщений: 13008 Откуда: Москва Дата регистрации: 23.03.2005 |
В качестве инфы для размышлений скрипт подсчета количества строк во всех таблицах:
------------------ Лень - это неосознанная мудрость. |
Re: MSSQL - есть ли такая конструкция | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Если заменить
на
то выводятся не только таблицы, но и вьюшки (представления). Что бы их отсечь приходится делать:
Без Join-а ни куда |
Re: MSSQL - есть ли такая конструкция | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Итого получился скрипт:
|
© 2000-2024 Fox Club  |