Время на прочтение
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
Как найти папку с данными
Папка с данными – папка, в которой программа хранит пользовательские данные, такие как база данных, настройки, шаблоны документов и т.д.
Папка с данными – это папка, в которой программа хранит пользовательские данные, такие как: база данных, настройки, шаблоны документов, логи работы.
Важно Обратите внимание, что база данных и некоторые другие данные могут храниться в других папках в зависимости от настроек.
Открыть папку из программы
Чтобы открыть папку с данными из программы, необходимо выполнить следующие действия.
Откройте настройки программы: Файл-Настройки
Далее перейдите на вкладку “База данных” и нажмите “Папка с данными”
После этого откроется окно проводника с необходимой папкой
Открыть папку вручную
Важно Если вы изменяли настройки пути к данным, то он может отличаться от приведенного в данной статье
Если программу не удается запустить или настройки программы не открываются, вы можете открыть папку с данными вручную.
Откройте “Проводник” (Мой компьютер)
Скопируйте адрес к папке с данными
C:ProgramDataF-LabGBS.Market6
Вставьте скопированный путь в адресную строку
Нажмите “Enter”. Откроется необходимая папка
Проиграть видео
Попробуйте GBS.Market
БЕСПЛАТНО
GBS.Market – удобная и доступная кассовая программа. Подойдет для розничного магазина и кафе. 30 дней бесплатно!
-
Опубликовано:
17 февраля, 2020 -
Изменено: 1 год назад -
2 комментов -
Просмотров
1 641
Inline Feedbacks
Показать все комментарии
Как удалить данные с базы (режим удаления, как был с 5й версии), что бы начать так сказать с начала?
Автор
В ответ
McSim
Здравствуйте!
“Режим удаления” сейчас в процессе доработки и он пока недоступен. Планируем включить его в версии 6.4, которая выйдет на канале бета примерно в начале осени.
Сейчас можно удалить всю БД – но учтите, что удалятся сразу все данные: товары, контакты, сотрудники и ряд настроек. БД – это файл main.fdb. Удалять необходимо при закрытой программе.
Перед удалением обязательно сделайте резервную копию.
Если необходимо удалить только часть данных, напишите нам на support@gbsmarket.ru, подскажем, что можно сделать.
Access для Microsoft 365 Access 2021 Access 2019 Access 2016 Access 2013 Access 2010 Еще…Меньше
По мере роста базы данных Access на компьютере для поиска записей вам придется не только быстро взглянуть на таблицу. В этой статье описаны несколько способов поиска записей.
Примечание: Статья неприменима к веб-приложениям Access — новому типу баз данных, которые создаются в Access и публикуются в Интернете. Дополнительные сведения см. в теме “Создание приложения Access”
В этой статье
-
Просмотр всех записей
-
Переход к определенной записи
-
Поиск записи
-
Фильтрация для отображения определенных записей
Просмотр всех записей
Для просмотра записей с Режим таблицы можно использовать кнопки навигации по записям в нижней части таблицы или формы.
1. Перейти к первой записи
2. Перейти к предыдущей записи
3. Поле текущей записи
4. Перейти к следующей записи
5. Перейти к последней записи
6. Открытие новой (пустой) записи
7. Индикатор фильтра
8. Поле поиска
Для перемещения по одной записи можно также использовать клавишу TAB.
К началу страницы
Переход к определенной записи
Когда вы знаете, какую запись нужно найти, выберите ее в списке с помощью окна “Перейти”. Поле “Перейти” обычно используется в формах.
-
Чтобы перейти к записи, щелкните стрелку справа от кнопки “Перейти”, а затем выберите запись из списка.
Примечание: Если вы знаете первые несколько символов записи, по которой нужно перейти, можно ввести их в поле “Перейти”.
В поле “Перейти” отображается достаточно данных для уникальной идентификации каждой записи. При выборе записи из списка Access отображает остальные данные в основной области формы.
К началу страницы
Поиск записи
При вводе текста в поле поиска при вводе каждого символа в реальном времени выделяется первое совпадающие значения. С помощью этой функции можно быстро найти запись с совпадающих значениями.
Вы также можете искать определенную запись в таблице или форме с помощью функции поиска.
Это эффективное решение для поиска определенной записи, если она соответствует определенным условиям, таким как условия поиска и операторы сравнения, такие как “равно” или “содержит”.
Примечание: Диалоговое окно “Поиск и замена” можно использовать только в том случае, если в таблице или форме отображаются данные. Это справедливо даже в том случае, если видимых записей нет, поскольку был применен фильтр.
-
Откройте таблицу или форму, а затем щелкните поле, в которое нужно в поиске.
-
На вкладке “Главная” в группе “Найти” нажмите кнопку “Найти”.
Появится диалоговое окно “Поиск и замена” с выбранной вкладке “Найти”.
-
В поле “Найти что” введите значение, по которому нужно искать.
-
Чтобы изменить поле для поиска или поиска по всей таблице, выберите соответствующий вариант в списке “Поиск в”.
Совет: Список “Совпадение” представляет оператор сравнения (например, “равно” или “содержит”). Чтобы расширить область поиска, в списке “Совпадение” выберите “С любой частью поля”.
-
В списке Поиск выберите вариант Всеи нажмите кнопку Найти далее.
-
Когда выделен элемент, для которого вы ищете, нажмите кнопку “Отмена” в диалоговом окне “Найти и заменить”, чтобы закрыть диалоговое окно. Выделяются записи, которые соответствуют вашим условиям
К началу страницы
Фильтрация для отображения определенных записей
Вы можете отфильтровать записи, чтобы отфильтровать записи, которые соответствуют определенным условиям, и операторы сравнения. Например, чтобы быстро сузить отображаемую запись, щелкните правой кнопкой мыши поле, значение которого вы хотите найти, и выберите “Равно”, “Не равно”, “Содержит” или “Не содержит” в нижней части меню. Фильтр можно включить или отключить, что упрощает переключение между отфильтрованным и неотфильтрованным представлениями одинаковых данных. В отличие от поиска, фильтр ограничивает только отображаемую запись.
-
Чтобы применить фильтр, основанный на выборе, откройте таблицу или форму.
-
Чтобы убедиться в том, что таблица или форма еще не отфильтровына, на вкладке “Главная” в группе “Фильтр сортировки &” нажмите кнопку “Дополнительные фильтры” и выберите команду “Очистить все фильтры”, если эта команда доступна.
-
Перейдите к записи, которая содержит значение, которое вы хотите использовать в фильтре, а затем щелкните внутри столбца (в представлении таблицы) или управления (в представлении формы, отчета или макета). Для фильтрации по частично выбранному символу выберите только нужные символы.
-
На вкладке Главная в группе Сортировка и фильтр нажмите кнопку Выделение и щелкните нужный фильтр.
-
Чтобы отфильтровать другие поля по выделенному фрагменту, повторите шаги 3 и 4.
К началу страницы
Нужна дополнительная помощь?
Нужны дополнительные параметры?
Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.
В сообществах можно задавать вопросы и отвечать на них, отправлять отзывы и консультироваться с экспертами разных профилей.
От автора: а что это вы под ногами ищете? Базу данных? Поверьте, скорее все, она никуда не делась, и лежит «целехонькая» на вашем ПК или сервере! Там уже смотрели? Наверное, вы просто не знаете, где хранятся данные MySQL. Об этом мы вам сегодня и расскажем.
Импорт-экспорт данных в MySQL
Чаще всего найти утерянные базы данных нужно для импорта или копирования. К счастью, для этого не обязательно знать место их «дислокации» на дисковом пространстве. Программные интерфейсы для работы с СУБД MySQL имеют встроенные средства переноса и создания копий БД и таблиц.
В наших «широтах» самой востребованной остается оболочка phpMyAdmin, предназначенная для администрирования системы управления БД MySQL. На примере этого веб-приложения мы и рассмотрим встроенные средства, которые позволят нам остаться в неведении, где находится MySQL.
В phpMyAdmin создание копий баз данных происходит через вкладку «Экспорт». Для дублирования БД или таблицы слева в списке выберете нужный для копирования элемент. После этого перейдите в раздел «Экспорт». В окне параметров в подразделе «Способ экспорта» должно быть установлено значение «Обычный». Затем в списке выделите базу данных (таблицу). После чего нажимаете в самом низу окна «Ок».
В результате программа создаст копию и сохранит ее на клиентской стороне. Вся работа с веб-приложением происходит через браузер, поэтому созданный дубликат БД нужно искать в папке загрузок.
Место хранения оригиналов баз
Знание встроенного функционала phpMyAdmin поможет быстро создать копии нужных данных. Но если на компьютере не установлена ни одна из программных оболочек для администрирования СУБД. А вам нужно перенести БД на другой сервер. Или изменить хранящуюся в таблицах информацию. При этом выполнять запросы придется через консоль, где обязательно прописывается путь к БД. Как видите знать, где хранится база данных MySQL, важно и нужно.
Вот еще один пример «из жизни начинающего админа». Предположим, первоначально вы пользовались Denwer. Но в один «непогожий» день вы нечаянно удалили часть файлов локального сервера. В результате чего он больше не запускается, и вы начинаете «рыть» оставшиеся папки в надежде спасти хотя бы базы данных. Но в этом случает также «удобнее» знать, где копать. Вот пример пути, где в веб-сервере хранятся БД: F:Webserverusrlocalmysql-5.5data, где F – это диск, на котором был установлен Denwer.
Для открытия файлов скопированных БД потребуется phpMyAdmin. Если вы установили сервер СУБД без оболочки, тогда по умолчанию место, где хранятся базы данных MySQL, находится здесь: C:Documents and SettingsAll UsersApplication DataMySQLMySQL Server 5.1data
Файл my.ini
Все описанные методы связаны с осуществлением поиска (в зависимости от варианта использования СУБД) той или иной папки, в которой программы (или сервер) сохраняют созданные базы. Но неужели пользователь никак не может повлиять на это, и самостоятельно указать место на дисковом пространстве MySQL, где хранятся все БД.
Такой вариант настройки был предусмотрен создателями этой системы управления. Все основные параметры задаются в файле my.ini. Он расположен в той же директории, куда установлена и система СУБД.
Данный тип файлов относится к конфигурационным, и открывается с помощью обычного «Блокнота». Чтобы задать «свое» место для всех созданным БД, откройте файл my.ini. Затем найдите в нем раздел [mysqld], и в параметре datadir пропишите путь к нужной папке. После сохранения внесенных изменений (Файл> Сохранить) все существующие базы будут перенесены в указанное вами место файловой системы компьютера или сервера.
Средства SQL
Все описанные выше варианты узнать в MySQL, где лежит БД, являются второстепенными. Потому что СУБД не понимает человеческой речи и письменности. Для общения с ней существует специальный язык SQL. Аббревиатура переводится как язык структурированных запросов (structured query language). То есть с помощью операторов и команд этого языка можно влиять на структуру содержащейся в источнике информации: делать выборки, обновлять данные, вставлять или удалять.
Но не будем слишком забираться в «дремучий лес» профессиональных знаний, нас интересует единственная команда SHOW. Точнее, один из ее вариантов SHOW VARIABLES. Эта команда SQL используется в администрировании для получения служебной информации о конкретном сервере или базе.
SHOW VARIABLES выводит список переменных и их значений из INFORMATION_SCHEMA, которая представляет собой «служебную» БД, в которой содержится информация обо всех базах, подключенных к серверу. Пример запроса: SHOW VARIABLES;
Но из всего этого списка нас интересует лишь одна переменная, с помощью которой можно «узнать» у сервера MySQL, где хранится база. Это переменная basedir, в значение которой записан путь к основной директории. Пример запроса: SHOW VARIABLES LIKE ‘basedir’;
А сейчас прекращайте понапрасну «рыться» в файловой системе своего ПК. Теперь вы точно знаете, как правильно «спросить» у СУБД MySQL, где хранятся базы. Надеемся, нам удалось научить вас этому!
Часто бывает необходимым узнать расположение базы 1С на компьютере. Например, вы купили новый компьютер и переносите на него данные, настраиваете автоматическое архивирования данных и прочее.
Как узнать, где хранится база 1С:
- Посмотреть в форме (она называется «Запуск 1С: Предприятия»), открывающаяся при нажатии на кнопку запуска программы 1С
- Если 1С открыта, посмотреть в главном меню «Справка» -> «О программе»
- Поиск хранения базы 1С с использованием средств Windows
Важно знать, что база 1С — это обычный файл, который называется 1Cv8.1CD. В нем хранятся все справочники, документы, отчеты и т.д. Такой формат базы называется файловым. Есть и другие форматы хранения базы данных(для хранения используются СУБД и такие базы обычно называют серверными), но на них мы останавливаться не будем.
Способ 1: Форма «Запуск 1С: Предприятия»
Нажимаем на кнопку запуска программы 1С (обычно находится или на рабочем столе, или в меню быстрого запуска), открывается форма «Запуск 1С:Предприятия» на рис. ниже
В этой форме расположен список баз, которые были подключены к 1С. Если ваша база не была подключена к этому списку, сразу переходим к 3 способу. Если нужная база данных 1С присутствует, выбираем ее и ниже(выделено красным) видим ее расположение.
Строку «File=»С:WORKБазыУПП 1.3 — Демо»;» можно представить в виде записи «КЛЮЧ=ЗНАЧЕНИЕ». В нашем примере КЛЮЧ = это слово «File», а ЗНАЧЕНИЕ — это «С:WORKБазыУПП 1.3 — Демо»;».
КЛЮЧ «File» нам говорит, что база хранится в каталоге (в нашем примере этим каталогом является «С:WORKБазыУПП 1.3 — Демо» ) и все данные базы лежат в этом каталоге в файле 1Cv8.1CD.
Примеры:
- File=»С:WORKБазыУПП 1.3 — Демо»; — говорит нам о том, что есть каталог «С:WORKБазыУПП 1.3 — Демо» и там лежит файл 1Cv8.1CD
- File=»\192.168.0.101База»; — говорит нам о том, что в сети есть компьютер с IP адресом 192.168.0.101 у которого в общем доступе есть каталог «База» и там лежит файл 1Cv8.1CD
- File=»\petrovБаза»; — говорит нам о том, что в сети есть компьютер с именем «petrov» у которого в общем доступе есть каталог «База» и там лежит файл 1Cv8.1CD
Нужно понять, что файл с базой данных может лежать не только на вашем компьютере, но и на компьютере вашего соседа, а вы к этой базе подключаетесь через локальную сеть. Если у вас есть возможность подключиться, значит есть возможность и скопировать этот файл, например, к себе на компьютер.
КЛЮЧ «File» — это один из возможных вариантов. Вот список всех возможных ключей:
- File — это мы уже прошли
- Srvr — база расположена на сервере 1С:Предприятие под управлением СУБД. При таком подключении файла 1Cv8.1CD вы уже не найдете. Пример такой записи: Srvr=»192.168.0.101″;Ref=»torg2019″
- ws — Очень редко встречается. Пример такой записи: ws=»http://petrov.ru/torg2019/ru_RU/»
Способ 2: Форма «О программе»
Если вы находитесь в открытой программе 1С, в главном меню нажмите «Справка» -> «О программе» или найдите кнопку с пиктограммой . Чаще она располагается в правом верхнем углу. После нажатия откроется форма «О программе». рис. ниже.
Способ 3: Поиск средствами Windows
Если файлы не были найдены, возможно, ваша база находится в архиве(обычно это файл с расширением zip или rar). Для поиска архива вы должны знать хотя бы часть его названия.
Пример: имя файла: ***база***.zip ( символы «***» означают ту часть имени, которую вы не знаете). Для поиска используем следующее выражение: *база*.zip
Подробнее о поиске файлов в Windows вы можете прочитать в этой здесь.
В этой статье мы научились узнавать расположение каталога хранения базы данных 1С.