Как найти базу
Базы данных телефонных номеров достаточно легко найти в интернете. В основном это относится к городским справочникам. Если же вам необходимо знать информацию о клиентах операторов сотовой связи, вам, скорее всего, понадобится прямое обращение к базе данных через работников клиентского отдела.
Инструкция
Если вы хотите найти базу данных номеров городской телефонной станции, воспользуйтесь специальным ресурсом nomer.org, справочниками, продающимися в букинистических магазинах вашего города, или помощью форумов. Для этого вам необходим доступ к интернету или локальной сети.
Найдите среди ресурсов вашего города наиболее посещаемый сайт или форум, выполните поиск базы данных номеров по нему или просто создайте соответствующую тему, вполне возможно, что среди участников ресурса найдутся те, кто поможет вам в поиске базы.
Если вам нужна база данных номеров сотовых телефонов определенного оператора сотовой связи для поиска информации об абонентах, обратитесь в клиентские офисы соответствующих компаний вашего города. Обратите внимание, что для обращения вам необходимо наличие документов, подтверждающих обоснованность вашего запроса, поскольку политикой конфиденциальности операторов предусмотрено неразглашение личной информации о клиентах третьим лицам за некоторыми исключениями.
Для получения информации об используемом операторе, регионе нахождения и регистрации абонента сотовой или городской телефонной сети воспользуйтесь ресурсом http://www.numberingplans.com/. Перейдите к разделу получения информации о номере телефона, введя его в международном формате соответственно ниже формы ввода образцу, и получите интересующие вас сведения после загрузки страницы.
Обратите внимание, что если вам нужен доступ к базе данных мобильных операторов, ни в коем случае нельзя использовать программное обеспечение, продающееся на рынках вашего города. За его приобретение, хранение или использование предусмотрена определенная мера ответственности, поэтому старайтесь пользоваться не противоречащими законодательству способами получения информации об абонентах.
Видео по теме
Полезный совет
Не покупайте диска с базами данных в переходах в метро и на рынках.
Источники:
- Открытие существующей базы данных
Войти на сайт
или
Забыли пароль?
Еще не зарегистрированы?
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
Система базы данных сегодня считается панацеей для поиска любой важной информации. Открытые базы данные или ОД содержат в себе исчерпывающую информацию по минимальным или расширенным вводным данным, которые задает пользователь. Все эти ОД размещены в сети интернет, и доступ к ним можно осуществлять как при простой регистрации, так и с помощью идентификации через специальные сервисы. Тема открытых баз данных является актуальной не только во всем мире, но и в каждой стране, в том числе и на территории России. Начиная с 2014 года, ежегодно в РФ публикуется не менее 5 тысяч набор данных, при этом около 800 приходится на федеральные органы власти.
В большинстве случаев, все эти данные абсолютно бесплатные. В ряде случаев, приходится заплатить за получение справки. Как правило, уплачивается государственная пошлина за саму справку, как это видно на примере получения выписки из ЕГРН, которую выдает Росреестр. Правда, на этом же сервисе можно получить сжатую информацию по данным бесплатно, из которой сведения может разобрать разве что специалист узкого профиля.
В мировом масштабе есть глобальные ОД, которые в большинстве своем представлены на английском языке. Этими данными пользуются все страны, например, из базы Интерпола.
Чтобы принимать правильные решения, нужно руководствоваться данными. Поэтому качественные источники информации — это половина успеха и в учебе, и в бизнесе. Приготовили подборку из 15 баз данных, где можно найти статистические показатели на разные темы — от ВВП до количества игроков World of Warcraft. В списке есть международные базы и ресурсы с данными по России и Москве. Узнайте, откуда брать свежую информацию, которой можно доверять. А чтобы прокачать критическое мышление, научиться оценивать релевантность данных и использовать их для решения бизнес-задач, приходите на курс Changellenge >> Польза.
Международные базы данных
Показатели развитости стран и индустрий
World Bank Open Data
Что здесь есть: статистические сведения по 570 показателям мирового развития. Временные ряды представлены с 1960 года для 208 стран. Охвачены экономические, социальные, финансовые показатели, данные по природным ресурсам и окружающей среде. Кроме того, база содержит сведения о государственном долге и его выплатах, иностранных инвестициях и финансовых потоках за период с 1970 по 2012 год для 135 стран.
Языки: английский, французский, испанский, арабский, китайский.
Форматы файлов: HTML, PDF.
Кому пригодится: стратегам, консультантам, GR-специалистам.
Лайфхаки: можно подписаться на рассылку новых исследований.
OECD.Stat
Что здесь есть: данные об экономических, финансовых, социальных, научно-технических и отраслевых показателях стран-участников Организации экономического сотрудничества и развития и отдельных стран, не являющихся членами организации. Например, в базе можно найти объем налоговых поступлений и трудовой миграции по индустриям, а также количество патентов разных видов.
Языки: английский, французский.
Форматы файлов: XLS, CSV, HTML.
Кому пригодится: стратегам, консультантам, GR-специалистам.
Лайфхаки: зарегистрированному пользователю доступно больше функций. Например, история поиска, создание собственных подборок данных и возможность ими поделиться.
Eurostat
Что здесь есть: информация о странах — членах ЕС. В базе собрана общая и региональная статистика, экономические и финансовые показатели, демографические и социальные условия, данные о промышленности и торговле и многое другое.
Языки: английский, французский, немецкий.
Форматы файлов: PNG, PDF, ZIP, TSV. Файл в формате TSV можно открыть в Excel и сохранить в другом формате.
Кому пригодится: стратегам, консультантам, GR-специалистам.
Лайфхаки: есть опция отправки данных по почте. Зарегистрированные пользователи могут сохранить историю поиска.
Euromonitor International
Что здесь есть: рыночные исследования по странам, индустриям, компаниям и потребителям. Вы получите исчерпывающие данные для анализа бизнес-среды, отраслевых показателей, долей рынка по брендам и компаниям, отраслевого состава крупнейших экономик мира и взаимоотношений между компаниями (B2B).
Языки: английский, французский и немецкий.
Форматы файлов: PDF, XLS, PowerPoint.
Кому пригодится: маркетологам, рекламщикам, PR-специалистам, продакт-менеджерам, инвест-банкирам, стратегам и консультантам.
Лайфхаки: можно купить доступ к онлайн-версии продуктов. Есть специальные тарифы для академических подписок на базы данных. Поэтому на этот ресурс подписаны многие крупные университеты (возможно, и ваш).
Statista
Что здесь есть: необычная статистика и отчеты по 150 странам и 600 отраслям. Например, если вам интересно, сколько людей в мире играют в World of Warcraft или у какой доли населения Индии есть смартфоны, то вам сюда.
Языки: английский, французский, немецкий и испанский.
Форматы файлов: PDF, XLS, PPT, PNG.
Кому пригодится: маркетологам, рекламщикам, GR- и PR-специалистам, бренд-менеджерам, продакт-менеджерам, HR-специалистам, инвест-банкирам, стратегам и консультантам.
Лайфхаки: в бесплатном аккаунте есть доступ только к базовой статистике (без данных по отраслям), скачивать информацию можно в PDF и PNG. За 49 долларов дают полный доступ к базе и возможность скачивать файлы в формате XLS. Есть корпоративная подписка для университетов и компаний. Можно заказать собственное исследование.
Экономические и финансовые показатели
International Monetary Fund Data
Что здесь есть: данные в виде временных рядов по экономическим и финансовым показателям, обменные курсы в масштабе отдельных стран и мира в целом.
Язык: английский.
Форматы файлов: XLS, PDF, PPT, PNG.
Кому пригодится: инвест-банкирам, стратегам, консультантам, GR-специалистам.
Лайфхаки: данные доступны только после регистрации. Можно подписаться на рассылку обновлений. Есть приложение для iOS.
OPEC Data / Graphs
Что здесь есть: данные стран ОПЕК по нефтяной отрасли (цена, налоги, запасы нефти, информация о производстве и продаже).
Языки: английский, французский.
Форматы файлов: XLS, XML.
Кому пригодится: инвест-банкирам, стратегам, консультантам, GR-специалистам.
Лайфхаки: есть приложение для iOS и Android.
WTO Statistics
Что здесь есть: данные о торговых потоках, тарифах, нетарифных мерах и доле торговли в добавленной стоимости по странам мира.
Языки: английский, французский, испанский.
Форматы файлов: XLS, CSV, HTML.
Кому пригодится: стратегам, консультантам, GR-специалистам, продакт-менеджерам, маркетологам.
Лайфхаки: у базы есть два варианта поиска данных: Tariff Analysis Online и The Tariff Download Facility. Tariff Analysis Online содержит данные о тарифах на уровне «тарифной линии» — восемь или более цифр кодов Гармонизированной системы описания и кодирования товаров. Чтобы получить доступ, нужно зарегистрироваться. The Tariff Download Facility содержит упрощенные данные — о связанных, применяемых и преференциальных тарифах и статистике импорта. Данные доступны в виде шестизначных кодов Гармонизированной системы описания и кодирования товаров. Информация находится в открытом доступе.
Базы данных по РФ
Финансовые показатели
Центральный банк РФ / Статистика
Что здесь есть: официальная статистика Центробанка РФ. В базе собраны макроэкономические показатели, показатели банковского сектора, финансового рынка, национальной платежной системы и операций денежно-кредитной политики.
Язык: русский.
Форматы файлов: DOC, XLS, PDF, ARJ. Формат архива ARJ можно открыть архиваторами для ZIP.
Кому пригодится: инвест-банкирам, стратегам, консультантам, GR-специалистам.
Лайфхаки: данные до 2008–2012 годов лежат в Архиве.
Показатели развитости индустрий в стране
Национальное агентство финансовых исследований
Что здесь есть: исследования, аналитика и прогнозы по разным темам (финансы, социальное развитие, предпринимательство, IT и телеком, строительство, рынок труда и HR, бренд и реклама, PR и GR-проекты).
Язык: русский.
Форматы файлов: DOC, XLS, PDF.
Кому пригодится: маркетологам, рекламщикам, GR- и PR-специалистам, бренд-менеджерам, продакт-менеджерам, проджект-менеджерам, HR-специалистам, инвест-банкирам, стратегам и консультантам.
Лайфхаки: часть данных находится в открытом доступе. Можно бесплатно подписаться на рассылку и получать новые исследования. Есть возможность заказать свое исследование.
JSON.TV
Что здесь есть: исследования преимущественно по техническим тематикам. В базе можно найти данные об интернете вещей, цифровизации, блокчейне, искусственном интеллекте, телекоме, а также рекламе, онлайн-играх, образовании и многом другом.
Языки: русский, английский.
Форматы файлов: DOC, XLS, PDF.
Кому пригодится: Продакт-менеджерам, проджект-менеджерам, стратегам и консультантам.
Лайфхаки: после регистрации доступна краткая версия исследований. За полную нужно заплатить.
Социологические исследования
Всероссийский центр изучения общественного мнения
Что здесь есть: социологические исследования, рейтинги политиков, индексы одобрения государственных и общественных институтов и другие опросы общественного мнения.
Язык: русский.
Форматы файлов: DOC, XLS, PDF.
Кому пригодится: маркетологам, рекламщикам, GR- и PR-специалистам, бренд-менеджерам, HR-специалистам.
Лайфхаки: можно заказать свое исследование.
Аналитический центр Юрия Левады
Что здесь есть: результаты опросов общественного мнениях на разные темы начиная с 1988 года.
Языки: русский, английский.
Форматы файлов: DOC, XLS, PDF.
Кому пригодится: GR- и PR-специалистам.
Лайфхаки: можно оформить бесплатную подписку и получать новые исследования.
Фонд «Общественное мнение»
Что здесь есть: социологические и маркетинговые данные, собранные в результате опросов разных групп населения. Исследования и аналитика по темам: образ жизни, ценности, работа и дом, экономика, СМИ и интернет.
Язык: русский.
Форматы файлов: DOC, XLS, PDF.
Кому пригодится: маркетологам, рекламщикам, GR- и PR-специалистам, бренд-менеджерам, продакт-менеджерам, проджект-менеджерам, HR-специалистам.
Лайфхаки: можно заказать исследование.
База данных по Москве
Портал открытых данных правительства Москвы
Что здесь есть: информация по таким категориям, как транспорт, ЖКХ, здравоохранение, культура, общественное питание, строительство, трудоустройство и так далее.
Языки: русский, английский.
Форматы файлов: XLS, HTML, JSON. Формат JSON можно открыть в «Блокноте» или конвертировать в CSV для работы в Excel.
Кому пригодится: маркетологам, рекламщикам, GR- и PR-специалистам, продакт-менеджерам, проджект-менеджерам, HR-специалистам, стратегам и консультантам.
Лайфхаки: на главной странице есть информация об обновлениях.
Содержание
- 1 Поиск открытых баз данных с помощью поисковиков
- 1.1 Поиск поддоменов
- 1.2 Усовершенствуем скрипт для поиска баз данных
- 2 Как защитить базы данных
- 3 Заключение
Облачная база данных — удобная вещь: вся работа по деплою и настройке сервера за вас уже сделана, остается только пользоваться! Системных администраторв это расслабляет настолько, что такие открытые находяться с помощью поисковых систем.
Еще по теме: Как проверить сайт на уязвимости
В статье я покажу, как автоматизировать поиск незащищенных баз данных с помощью поисковиков.
Поиск открытых баз данных с помощью поисковиков
Сидеть, менять поисковые системы и перебирать все URL вручную не очень увлекательно. Слишком часто видим «error : Permission denied». Значит, пора переходить к автоматизации!
Вся информация предоставлена исключительно в ознакомительных целях. Ни автор, ни редакция сайта spy-soft.net не несут ответственности за любой возможный вред, причиненный материалами данной статьи.
Программировать, правда, не придется, потому что некоторые такие как Францеска Эрера — это уже сделали до нас. Возьмем, к примеру интересный скрипт, который сам подбирает URL и ищет уязвимые базы данных.
Скачиваем его и устанавливаем зависимости:
git clone https://github.com/Turr0n/firebase.git cd firebase pip install —r requirements.txt |
После этого запускаем:
python3 firebase.py —p 4 —c 150 –dnsdumpster |
Ключи:
- p — указывает количество потоков (по умолчанию 1, максимум 4);
- dnsdumpster — генерирует URL самостоятельно;
- с — какое количество доменов генерировать.
Да, скрипт умеет генерировать ссылки самостоятельно. Точнее, делает это не сам, а обращается за помощью к утилите DNSdumpster.
По результату видно, что из найденных баз:
- 37 урлов «битые» или больше не существуют;
- 171 база имеет аутентификацию при обращении к данным и защищена;
- одна база с подозрением на уязвимость;
- 25 баз не защищены или уязвимы.
Можно скормить скрипту и свой список. В нем должны быть только поддомены третьего уровня. Например, вы делаете вот такой входной список:
Тогда скрипт проверит вот эти URL:
https://xxx.firebaseio.com https://yyy.firebaseio.com https://zzz.firebaseio.com |
Поиск поддоменов
Чтобы получить наиболее эффективный список, можно воспользоваться скриптом sublist3r, который использует разные техники поиска и OSINT, чтобы подобрать наиболее правдоподобные варианты.
Запускаем:
python3 sublist3r.py —d firebaseio.com |
И на выходе получаем около 650 доменов. Работает очень быстро.
Еще одна утилита для генерации доменов — subbrute. Она выдала мне в районе 100 поддоменов, но работала 30–40 минут.
Censys-subdomain-finder, на который я возлагал большие надежды, выдал всего семь доменов. К слову, и сам сервис выдал немного — 25 урлов.
Все перечисленные утилиты не входят в состав дистрибутива Kali Linux, их пришлось качать отдельно.
Из онлайновых сервисов можно воспользоваться nmmapper, DNSdumpster, Pentest-Tools.
Если все еще мало, можно задействовать знания о том, что настройки интеграции происходят в файле:
И поискать в гите запросом:
site:github.com google—services.json |
Этот вариант идет вразрез со словом «автоматизация», зато можно докопаться до уникальных баз.
Усовершенствуем скрипт для поиска баз данных
Теперь мы вооружены добротным набором урлов и знаем, что какие‑то из них могут быть уязвимы. Даже можем запустить скрипт и проверить количество неверно настроенных баз из нашего списка. Но цель в таких случаях — не собрать статистику, а получить уязвимые цели. Поэтому откроем код скрипта и слегка поправим.
Посмотри вот на этот кусок кода:
urls = set() with open(args_.list, ‘r’) as f: [urls.add(‘https://{}.firebaseio.com/.json’.format(line.rstrip())) for line in f] |
Из него понятно, как формируется полный адрес. А в конце формируется отчет:
print(‘404 DBs: {}’.format(l[‘-2’])) print(‘Secure DBs: {}’.format(l[‘-1’])) print(‘Possible vulnerable DBs: {}’.format(l[‘0’])) print(‘Vulnerable DBs: {}’.format(l[‘1’])) |
Кусок кода с проверкой я приводить не буду. Там нет ничего любопытного, мне нужно было найти само присвоение. И вот оно:
with open(args_.fn, ‘w’) as f: json.dump(loot, f) l = {‘1’:0, ‘0’:0, ‘-1’:0, ‘-2’:0} for result in loot: l[str(result[‘status’])] += 1 |
Вот в этом месте я создаю свой массив по статусу 1. Так как я еще не понимаю, чем его заполнять, записываю все подряд. Получилось примерно следующее:
l = {‘1’:0, ‘0’:0, ‘-1’:0, ‘-2’:0} Vulnerable = [] for result in loot: l[str(result[‘status’])] += 1 if str(result[‘status’]) == ‘1’: Vulnerable.append(result) |
И в конце добавляю вывод результата в консоль:
print(‘404 DBs: {}’.format(l[‘-2’])) print(‘Secure DBs: {}’.format(l[‘-1’])) print(‘Possible vulnerable DBs: {}’.format(l[‘0’])) print(‘Vulnerable DBs: {}’.format(l[‘1’])) print(Vulnerable) |
После запуска вижу такую картину.
Мне высыпалось все, что хранилось в базах. Зато теперь я знаю, что записывать в Vulnerable. Правим код, как надо:
l = {‘1’:0, ‘0’:0, ‘-1’:0, ‘-2’:0} Vulnerable = [] for result in loot: l[str(result[‘status’])] += 1 if str(result[‘status’]) == ‘1’: Vulnerable.append(result[‘url’]) ... print(‘404 DBs: {}’.format(l[‘-2’])) print(‘Secure DBs: {}’.format(l[‘-1’])) print(‘Possible vulnerable DBs: {}’.format(l[‘0’])) print(‘Vulnerable DBs: {}’.format(l[‘1’])) print(Vulnerable) |
На этот раз при запуске видим то, что было нужно, — список уязвимых баз.
Особенно меня заинтересовала вот эта ссылка:
https://covid-19-tracker-e76ca.firebaseio.com/.json |
В Малайзии так спешили отслеживать перемещения больных ковидом, что не поставили пароль на базу данных с их координатами…
Как защитить базы данных
Назвать эту проблему уязвимостью — некоторое преувеличение. Все сводится к тому, что Google позволяет открыть доступ к содержимому базы всем неавторизованным пользователям, и некоторые разработчики так и поступают.
Поэтому, чтобы защититься, достаточно прописать политики безопасности Firebase. Google предлагает придерживаться следующих правил.
Даже во время разработки (на тесте и на stage) не стоит открывать доступ ко всем данным в Firebase неавторизованным пользователям, но есть возможность открыть их при авторизации:
service cloud.firestore { match /databases/{database}/documents { match /{document=**} { allow read, write: if request.auth != null; } } } |
Это правило необходимо, когда нескольким пользователям нужно работать с одним контентом.
Следующее правило дает доступ к данным только владельцам этих данных. Остальные пользователи не смогут их видеть или обрабатывать:
service cloud.firestore { match /databases/{database}/documents { // Allow only authenticated content owners access match /some_collection/{userId}/{documents=**} { allow read, write: if request.auth != null && request.auth.uid == userId } } } |
И третье правило устанавливает доступ на чтение некоторых данных некоторым пользователям, но редактирование — только его владельцу:
service cloud.firestore { match /databases/{database}/documents { // For attribute-based access control, Check a boolean `admin` attribute allow write: if get(/databases/$(database)/documents/users/$(request.auth.uid)).data.admin == true; allow read: true; // Alterntatively, for role-based access, assign specific roles to users match /some_collection/{document} { allow read: if get(/databases/$(database)/documents/users/$(request.auth.uid)).data.role == «Reader» allow write: if get(/databases/$(database)/documents/users/$(request.auth.uid)).data.role == «Writer» } } } |
Более подробные сведения о безопасности аутентификации и контроле доступа можно найти в документации Firebase.
Заключение
Итак, мы рассмотрели, как происходит утечка данных, разобрались с поиском уязвимых URL, научились автоматизировать процесс и узнали, как избежать этой проблемы.
В документации по безопасности Firebase приведены и сами правила, и разные способы защитить данные. Не стоит ими пренебрегать, перекладывая ответственность на какие‑нибудь гейты или прокси‑серверы. Адрес базы может быть обнаружен.
Еще по теме: Что такое Google Dorks?
Время на прочтение
5 мин
Количество просмотров 61K
Описание общей потребности в поиске данных и объектов в базе данных
Поиск данных, а также хранимых процедур, таблиц и других объектов в базе данных является достаточно актуальным вопросом в том числе и для C#-разработчиков, а также и для .NET-разработки в целом.
Достаточно часто может возникнуть ситуация, при которой нужно найти:
- объект базы данных (таблицу, представление, хранимую процедуру, функцию и т д)
- данные (значение и в какой таблице располагается)
- фрагмент кода в определениях объектов базы данных
Существует множество готовых решений как платных, так и бесплатных.
Сначала рассмотрим как можно осуществлять поиск данных и объектов в базе данных с помощью встроенных средств самой СУБД, а затем рассмотрим как это сделать с помощью бесплатной утилиты dbForge Search.
Поиск с помощью встроенных средств самой СУБД
Определить есть ли таблица Employee в базе данных можно с помощью следующего скрипта:
Поиск таблицы по имени
select [object_id], [schema_id],
schema_name([schema_id]) as [schema_name],
[name],
[type],
[type_desc],
[create_date],
[modify_date]
from sys.all_objects
where [name]='Employee';
Результат может быть примерно такой:
Здесь выводятся:
- идентификаторы объекта и схемы, где располагается объект
- название этой схемы и название этого объекта
- тип объекта и описание этого типа объекта
- даты и время создания и последней модификации объекта
Чтобы найти все вхождения строки “Project”, то можно использовать следующий скрипт:
Поиск всех объектов по подстроке в имени
select [object_id], [schema_id],
schema_name([schema_id]) as [schema_name],
[name],
[type],
[type_desc],
[create_date],
[modify_date]
from sys.all_objects
where [name] like '%Project%';
Результат может быть примерно такой:
Как видно из результата, здесь подстроку “Project” содержат не только две таблицы Project и ProjectSkill, но и также некоторые первичные и внешние ключи.
Чтобы понять кому именно принадлежат данные ключи, добавим в вывод поле parent_object_id и его имя и схему, в которой он располагается следующим образом:
Поиск всех объектов по подстроке в имени с выводом родительских объектов
select ao.[object_id], ao.[schema_id],
schema_name(ao.[schema_id]) as [schema_name],
ao.parent_object_id,
p.[schema_id] as [parent_schema_id],
schema_name(p.[schema_id]) as [parent_schema_name],
p.[name] as [parent_name],
ao.[name],
ao.[type],
ao.[type_desc],
ao.[create_date],
ao.[modify_date]
from sys.all_objects as ao
left outer join sys.all_objects as p on ao.[parent_object_id]=p.[object_id]
where ao.[name] like '%Project%';
Результатом будет вывод таблицы с детальной информацией о родительских объектах, т е где определены первичные и внешние ключи:
В запросах используются следующие системные объекты:
- таблица sys.all_objects
- скалярная функция schema_name
Итак, разобрали как найти объекты в базе данных с помощью встроенных средств самой СУБД.
Теперь покажем как найти данные в базе данных на примере поиска строк.
Чтобы найти строковое значение по всем таблицам базы данных, можно воспользоваться следующим решением. Упростим данное решение и покажем как можно найти например значение “Ramiro” с помощью следующего скрипта:
Поиск строковых значений по подстроке во всех таблицах базы данных
set nocount on
declare @name varchar(128), @substr nvarchar(4000), @column varchar(128)
set @substr = '%Ramiro%'
declare @sql nvarchar(max);
create table #rslt
(table_name varchar(128), field_name varchar(128), [value] nvarchar(max))
declare s cursor for select table_name as table_name from information_schema.tables where table_type = 'BASE TABLE' order by table_name
open s
fetch next from s into @name
while @@fetch_status = 0
begin
declare c cursor for
select quotename(column_name) as column_name from information_schema.columns
where data_type in ('text', 'ntext', 'varchar', 'char', 'nvarchar', 'char', 'sysname', 'int', 'tinyint') and table_name = @name
set @name = quotename(@name)
open c
fetch next from c into @column
while @@fetch_status = 0
begin
--print 'Processing table - ' + @name + ', column - ' + @column
set @sql='insert into #rslt select ''' + @name + ''' as Table_name, ''' + @column + ''', cast(' + @column +
' as nvarchar(max)) from' + @name + ' where cast(' + @column + ' as nvarchar(max)) like ''' + @substr + '''';
print @sql;
exec(@sql);
fetch next from c into @column;
end
close c
deallocate c
fetch next from s into @name
end
select table_name as [Table Name], field_name as [Field Name], count(*) as [Found Mathes] from #rslt
group by table_name, field_name
order by table_name, field_name
drop table #rslt
close s
deallocate s
Результат выполнения может быть таким:
Здесь выводятся имена таблиц и в каких столбцах хранится значение, содержащие подстроку “Ramiro”. А также количество найденных входов данной подстроки для найденной пары таблица-колонка.
Чтобы найти объекты, в определениях которых есть заданный фрагмент кода, можно воспользоваться следующими системными представлениями:
- sys.sql_modules
- sys.all_sql_modules
- sys.syscomments
Например, используя последнее представление, можно с помощью следующего скрипта найти все объекты, в определениях которых встречается заданный фрагмент кода:
Поиск фрагмента кода в определениях объектов базы данных
select obj.[object_id],
obj.[name],
obj.[type_desc],
sc.[text]
from sys.syscomments as sc
inner join sys.objects obj on sc.[id]=obj.[object_id]
where sc.[text] like '%code snippet%';
Здесь будет выведен идентификатор, название, описание и полное определение объекта.
Поиск с помощью бесплатной утилиты dbForge Search
Однако, более удобно поиск производить с помощью готовых хороших инструментов. Одним из таких инструментов является dbForge Search.
Для вызова этой утилиты в окне SSMS нажмите на кнопку .
Появится следующее окно поиска:
Обратите внимание на верхнюю панель (слева направо):
- можно переключать режим поиска (ищем DDL (объекты) или данные)
- непосредственно что ищем (какую подстроку)
- учитывать ли регистр, искать точное соответствие слову, искать вхождения:
- группировать результат по типам объектов — кнопка
- выбрать нужные типы объектов для поиска:
- также можно задать несколько баз данных для поиска и выбрать экземпляр MS SQL Server
Это все в режиме поиска объектов, т е когда включен DDL:
В режиме поиска данных изменится только выбор типов объектов:
А именно будут доступны для выбора только таблицы, где и хранятся собственно сами данные:
Теперь как и раньше найдем все вхождения подстроки “Project” в названиях объектов:
Как видно, был выбран режим поиска по DDL-объектам, заполнено что ищем-строка “Project”, остальное все было по умолчанию.
При выделении найденного объекта внизу отображается код определения данного объекта или всего его родительского объекта.
Также можно переместить навигацию на найденный объект, щелкнув на кнопку :
Можно также сгруппировать найденные объекты по их типу:
Обратите внимание, что выводятся даже те таблицы, в которых есть поля, в именах которых содержится подстрока “Project”. Однако, напомним, что режим поиска можно менять: искать полное соответствие/частичное/учитывать регистр или нет.
Теперь найдем значение “Ramiro” по всем таблицам:
Обратите внимание, что внизу отображаются все строки, в которых содержится подстрока “Ramiro” выбранной таблицы Employee.
Также можно переместить навигацию к найденному объекту, нажав как и ранее на кнопку :
Таким образом мы можем искать нужные объекты и данные в базе данных.
Заключение
Были рассмотрены способы поиска как самих данных, так и объектов в базе данных как с помощью встроенных средств самой СУБД MS SQL Server, так и с помощью бесплатной утилиты dbForge Search.
Также от компании Devart есть и ряд других бесплатных готовых решений, полный список которых можно посмотреть здесь.
Источники
- Search_Script.sql
- SSMS
- dbForge Search
- Документация по Microsoft SQL
- Бесплатные решения от компании Devart