Расположение файлов для экземпляра по умолчанию и именованных экземпляров SQL Server
Установка SQL Server состоит из одного или нескольких отдельных экземпляров. Как экземпляр по умолчанию, так и именованный экземпляр имеет собственный набор программных файлов и файлов данных, а также набор общих файлов, используемых всеми экземплярами SQL Server , установленными на компьютере.
Для экземпляра SQL Server , включающего Компонент Database Engine, Службы Analysis Servicesи Службы Reporting Services, каждый компонент имеет полный набор файлов данных и исполняемых файлов, а также общие файлы, используемые всеми компонентами.
Чтобы изолировать друг от друга папки установки, формируется уникальный идентификатор экземпляра для каждого из компонентов экземпляра SQL Server.
Программные файлы и файлы данных не могут быть установлены на съемном диске, в файловой системе со сжатием данных, в каталоге расположения системных файлов, а также на общих дисках экземпляра отказоустойчивого кластера.
Может потребоваться настроить программное обеспечение, например антивирусное и антишпионское приложения, чтобы исключить из проверки типы файлов и папки SQL Server. Дополнительные сведения см. в этой статье службы поддержки: Настройка антивирусного программного обеспечения на компьютерах, где выполняется SQL Server.
Системные базы данных (Master, Model, MSDB и TempDB) и пользовательские базы данных компонента Компонент Database Engine можно установить с использованием протокола SMB в качестве хранилища файлового сервера Server Message Block (SMB). Это относится как к изолированному варианту установки SQL Server , так и к установке кластеров отработки отказа SQL Server . Дополнительные сведения см. в разделе Установка SQL Server с общей папкой SMB в качестве хранилища.
Не удаляйте следующие каталоги или их содержимое: Binn, Data, Ftdata, HTML или 1033. При необходимости можно удалить другие каталоги, однако возможно, что не удастся вернуть утраченную функциональность или восстановить потерянные данные без удаления и повторной установки SQL Server. Не удаляйте и не изменяйте HTM-файлы в каталоге HTML. Они необходимы для правильной работы средств SQL Server .
Общие файлы для всех экземпляров SQL Server
Общие файлы, используемые всеми экземплярами на одном компьютере, устанавливаются в папку диск>:\Program Files\Microsoft SQL Server\nnn\. диск> — это буква диска, на который устанавливаются компоненты. Обычно по умолчанию диск C. Значение nnn указывает версию. В следующей таблице перечислены версии для путей. — значение версии, используемое в идентификаторе экземпляра, и путь реестра.
| Версия | *nnn* | |
|---|---|---|
| SQL Server 2022 (16.x) | 160 | 16 |
| SQL Server 2019 (15.x) | 150 | 15 |
| SQL Server 2017 (14.x); | 140 | 14 |
| SQL Server 2016 (13.x); | 130 | 13 |
| SQL Server 2014 (12.x) | 120 | 12 |
| SQL Server 2012 (11.x) | 110 | 11 |
Расположение файлов и сопоставление данных реестра
Во время установки SQL Server для каждого компонента сервера создается идентификатор экземпляра. В этой версии SQL Server сервер состоит из компонента Компонент Database Engine, служб Службы Analysis Servicesи Службы Reporting Services.
Идентификатор экземпляра по умолчанию указывается в следующем формате.
- Для компонента Компонент Database Engine— MSSQL, за которым следуют основной номер версии, символ подчеркивания и дополнительный номер версии (если применимо), затем точка и имя экземпляра.
- Для служб Службы Analysis Services— MSAS, за которым следуют основной номер версии, символ подчеркивания и дополнительный номер версии (если применимо), затем точка и имя экземпляра.
- Для служб Службы Reporting Services— MSRS, за которым следуют основной номер версии, символ подчеркивания и дополнительный номер версии (если применимо), затем точка и имя экземпляра.
Ниже приведены примеры идентификаторов экземпляров по умолчанию для данной версии SQL Server .
- MSSQL.MSSQLSERVER — экземпляр SQL Server по умолчанию.
- MSAS.MSSQLSERVER — экземпляр по умолчанию служб SQL Server Analysis Services.
- MSSQL.MyInstance — именованный экземпляр SQL Server с именем «MyInstance».
Именованный экземпляр SQL Server , в состав которого входит компонент Компонент Database Engine и службы Службы Analysis Services, имеет имя «MyInstance» и устанавливается каталоге по умолчанию, имеет следующую структуру каталогов.
- C:\Program Files\Microsoft SQL Server\MSSQL.MyInstance\
- C:\Program Files\Microsoft SQL Server\MSAS.MyInstance\
В качестве идентификатора экземпляра может быть указано любое значение, следует только избегать применения специальных символов и зарезервированных ключевых слов.
Идентификатор экземпляра, отличный от заданного по умолчанию, можно указать во время установки SQL Server . Если пользователь хочет изменить каталог установки по умолчанию, вместо \\Microsoft SQL Server используется \Microsoft SQL Server. Следует заметить, что идентификаторы экземпляров, начинающиеся с символа подчеркивания (_) или содержащие символ решетки (#) или знак доллара ($), не поддерживаются.
Службы Integration Services и клиентские компоненты не привязаны к экземпляру, поэтому им не присваивается идентификатор экземпляра. По умолчанию компоненты, не связанные с определенным экземпляром, устанавливаются в общий каталог: «\диск>:\Program Files\Microsoft SQL Server\nnn\». Изменение пути установки для одного компонента приводит к его изменению и для всех остальных компонентов. При последующих установках компоненты, не зависящие от экземпляра, устанавливаются в каталог исходной установки.
SQL Server Службы Analysis Services — это единственный компонент SQL Server, который поддерживает переименование экземпляра после установки. При переименовании экземпляра служб Службы Analysis Services его идентификатор экземпляра не изменится. После переименования экземпляра в каталогах и разделах реестра по-прежнему используется идентификатор экземпляра, созданный во время установки.
Куст реестра создается в HKLM\Software\Microsoft\Microsoft SQL Server\Instance_ID> для компонентов, привязанных к экземпляру. Например,
- HKLM\Software\Microsoft\Microsoft SQL Server\MSSQL.MyInstance
- HKLM\Software\Microsoft\Microsoft SQL Server\MSAS.MyInstance
- HKLM\Software\Microsoft\Microsoft SQL Server\MSRS.MyInstance
В реестре также хранится сопоставление идентификаторов экземпляров с именами экземпляров. Сопоставление идентификатора экземпляра с именем экземпляра осуществляется следующим образом:
- [HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server\Instance Names\SQL] «»=»MSSQL»
- [HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server\Instance Names\OLAP] «»=»MSAS»
- [HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server\Instance Names\RS] «»=»MSRS»
Указание путей к файлам
В ходе установки вы можете изменить путь установки для следующих компонентов:
Путь установки отображается в программе установки только для компонентов с пользовательской целевой папкой.
| Компонент | Путь по умолчанию | Настраиваемый или фиксированный путь |
|---|---|---|
| Компонент Database Engine компоненты сервера | \Program Files\Microsoft SQL Server\MSSQL.\ | Настраивается |
| Компонент Database Engine файлы данных | \Program Files\Microsoft SQL Server\MSSQL.\ | Настраивается |
| Службы Analysis Services сервер | \Program Files\Microsoft SQL Server\MSAS.\ | Настраивается |
| Службы Analysis Services файлы данных | \Program Files\Microsoft SQL Server\MSAS.\ | Настраивается |
| Службы Reporting Services сервер отчетов | \Program Files\Microsoft SQL Server\MSRS.\Reporting Services\ReportServer\Bin\ | Настраивается |
| Службы Reporting Services диспетчер отчетов | \Program Files\Microsoft SQL Server\MSRS.\Reporting Services\ReportManager\ | Фиксированный путь |
| Службы Integration Services | \nnn\DTS\ 1 | Настраивается |
| Клиентские компоненты (за исключением bcp.exe и sqlcmd.exe) | \nnn\Tools\ 1 | Настраивается |
| Клиентские компоненты (bcp.exe и sqlcmd.exe) | \Client SDK\ODBC\nnn\Tools\Binn | Фиксированный путь |
| Объекты COM для репликации и размещения на сервере | диск>:\Program Files\Microsoft SQL Server\nnn\COM\ 2 | Фиксированный путь |
| Службы Integration Services библиотеки DLL служб для механизмов преобразования данных в реальном режиме времени и конвейерного преобразования данных и программа командной строки dtexec | диск>:\Program Files\Microsoft SQL Server\nnn\DTS\Binn | Фиксированный путь |
| Библиотеки DLL, которые обеспечивают управляемое соединение, поддерживаемое для служб Службы Integration Services | диск>:\Program Files\Microsoft SQL Server\nnn\DTS\Connections | Фиксированный путь |
| Библиотеки DLL для каждого типа перечислителей, которые поддерживают службы Службы Integration Services | диск>:\Program Files\Microsoft SQL Server\nnn\DTS\ForEachEnumerators | Фиксированный путь |
| SQL Server , поставщики инструментария WMI | диск>:\Program Files\Microsoft SQL Server\nnn\Shared\ | Фиксированный путь |
| Компоненты, которые разделены между всеми экземплярами SQL Server | диск>:\Program Files\Microsoft SQL Server\nnn\Shared\ | Фиксированный путь |
Убедитесь, чтобы папка \Program Files\Microsoft SQL Server\ была защищена ограниченными разрешениями.
Диск по умолчанию для расположений файлов — systemdrive, обычно диск C. Пути установки дочерних компонентов определяются путем установки родительского компонента.
1 Используется общий путь установки для Службы Integration Services и клиентских компонентов. Изменение пути установки для одного компонента влечет изменение пути для других компонентов. При последующих установках компоненты устанавливаются в расположение исходной установки.
2 Этот каталог используется всеми экземплярами SQL Server на компьютере. При применении обновления к любому из экземпляров на компьютере все файловые изменения коснутся каждого из них. При добавлении компонентов в существующую конфигурацию невозможно ни изменить расположение ранее установленного компонента, ни указать расположение нового. Необходимо либо установить дополнительные компоненты в каталоги, созданные программой установки, либо удалить продукт и установить его заново.
Для кластеризованных конфигураций необходимо выбрать локальный диск, доступный на всех узлах кластера.
При задании пути установки во время установки компонентов сервера или файлов данных программа установки использует идентификатор экземпляра в дополнение к заданному положению для программ и файлов данных. Программа установки не пользуется идентификаторами экземпляров для средств и других общих файлов. Идентификатор экземпляра также не используется для программ и файлов данных служб Службы Analysis Services , но используется для репозитория служб Службы Analysis Services .
При указании пути установки для компонента Компонент Database Engine программа установки SQL Server использует этот путь в качестве корневого каталога этой установки для всех папок, относящихся к экземпляру, включая файлы данных SQL. Если в этом случае указать в качестве корневого каталога C:\Program Files\Microsoft SQL Server\MSSQL.\MSSQL\, то каталоги, относящиеся к данному экземпляру, будут добавлены в конец этого пути.
Поэтому при использовании функции обновления USESYSDB в мастере установки SQL Server (режим установки с пользовательским интерфейсом) можно попасть в ситуацию, когда продукт окажется установленным в рекурсивной структуре папок. Например, SQLProgramFiles>\MSSQL14\MSSQL\MSSQL10_50\MSSQL\Data\. Поэтому при использовании функции USESYSDB вместо компонента Компонент Database Engine необходимо указывать путь установки файлов данных SQL.
Обычно файлы данных можно найти в дочернем каталоге с именем Data. Например, чтобы при обновлении указать путь к корневому каталогу данных системных баз данных, задайте C:\Program Files\Microsoft SQL Server\MSSQL.\, тогда файлы данных будут расположены в каталоге C:\Program Files\Microsoft SQL Server\MSSQL.\MSSQL\Data.
Просмотр списка баз данных на SQL Server
В этой статье описывается, как просмотреть список баз данных на экземпляре SQL Server с помощью SQL Server Management Studio или Transact-SQL.
Разрешения
Если участник, вызывающий sys.databases , не является владельцем базы данных, а база данных не является master или tempdb , то минимальными разрешениями, необходимыми для просмотра соответствующей строки, являются разрешения уровня сервера ALTER ANY DATABASE или VIEW ANY DATABASE или разрешение CREATE DATABASE в базе данных master . Узнать базу данных, к которой подключен участник, можно в представлении каталога sys.databases .
Использование среды SQL Server Management Studio
Просмотр списка баз данных в экземпляре SQL Server
- В обозревателе объектов подключитесь к экземпляру ядра СУБД SQL Server, а затем разверните этот экземпляр.
- Для просмотра списка всех баз данных в экземпляре разверните список Базы данных.
Использование Transact-SQL
Просмотр списка баз данных в экземпляре SQL Server
- Соединитесь с ядром СУБД .
- На стандартной панели выберите пункт Создать запрос.
- Скопируйте приведенный ниже пример в окно запроса и нажмите кнопку Выполнить. В этом примере возвращается список баз данных на экземпляре SQL Server. Список содержит имена баз данных, их идентификаторы и даты создания.
SELECT name, database_id, create_date FROM sys.databases; GO
Далее
- Представления каталога баз данных и файлов (Transact-SQL)
- sys.databases (Transact-SQL)
Поиск данных и объектов в базе данных MS SQL Server с помощью бесплатной утилиты dbForge Search
Описание общей потребности в поиске данных и объектов в базе данных
Поиск данных, а также хранимых процедур, таблиц и других объектов в базе данных является достаточно актуальным вопросом в том числе и для 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';
Результат может быть примерно такой:
- идентификаторы объекта и схемы, где располагается объект
- название этой схемы и название этого объекта
- тип объекта и описание этого типа объекта
- даты и время создания и последней модификации объекта
Поиск всех объектов по подстроке в имени
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 (объекты) или данные)
- непосредственно что ищем (какую подстроку)
- учитывать ли регистр, искать точное соответствие слову, искать вхождения:


Это все в режиме поиска объектов, т е когда включен DDL:

В режиме поиска данных изменится только выбор типов объектов:

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

Теперь как и раньше найдем все вхождения подстроки “Project” в названиях объектов:

Как видно, был выбран режим поиска по DDL-объектам, заполнено что ищем-строка “Project”, остальное все было по умолчанию.
При выделении найденного объекта внизу отображается код определения данного объекта или всего его родительского объекта.

Также можно переместить навигацию на найденный объект, щелкнув на кнопку :

Можно также сгруппировать найденные объекты по их типу:

Обратите внимание, что выводятся даже те таблицы, в которых есть поля, в именах которых содержится подстрока “Project”. Однако, напомним, что режим поиска можно менять: искать полное соответствие/частичное/учитывать регистр или нет.
Теперь найдем значение “Ramiro” по всем таблицам:

Обратите внимание, что внизу отображаются все строки, в которых содержится подстрока “Ramiro” выбранной таблицы Employee.

Также можно переместить навигацию к найденному объекту, нажав как и ранее на кнопку :

Таким образом мы можем искать нужные объекты и данные в базе данных.
Заключение
Были рассмотрены способы поиска как самих данных, так и объектов в базе данных как с помощью встроенных средств самой СУБД MS SQL Server, так и с помощью бесплатной утилиты dbForge Search.
Также от компании Devart есть и ряд других бесплатных готовых решений, полный список которых можно посмотреть здесь.
Источники
- Search_Script.sql
- SSMS
- dbForge Search
- Документация по Microsoft SQL
- Бесплатные решения от компании Devart
Где хранятся базы данных MySQL
Файлы баз данных в СУБД MySQL хранятся на жёстком диске. По умолчанию все файлы с базами хранятся в директории /var/lib/mysql. Однако это путь можно изменить.
В данной статье будет показано как посмотреть, где хранятся файлы баз данных в СУБД MySQL в операционной системе Ubuntu 20.04.
Где хранятся базы данных MySQL
По умолчанию все файлы с базами хранятся в директории /var/lib/mysql. Однако, чтобы убедиться в этом можно выполнить команду sudo grep -R ‘datadir’ /etc/mysql/ которая отобразит полный путь до файлов, в которых хранятся базы данных:
sudo grep -R ‘datadir’ /etc/mysql/

Если перейти по предложенному пути — /var/lib/mysql то в директории будут расположены все необходимые файлы c баз данных. Команду для перехода в директорию необходимо выполнять из-под пользователя root иначе будет ошибка Permission denied:


Теперь вы знаете где находятся базы данных MySQL. Также можно выполнить команду mysqld с параметрами —verbose и —help которая отобразит путь хранения файлов с базами данных. Данная команда аналогична предыдущей команде.
mysqld —verbose —help | grep ^datadir

Если есть необходимость в изменении пути хранения файлов баз данных, то необходимо открыть конфигурационный файл MySQL от имени суперпользователя (root) при помощи любого текстового редактора. В данном примере, как мы узнали выше, конфигурационный файл находится по пути /etc/mysql/mysql.conf.d/mysqld.cnf. Команда для его редактирования будет выглядеть следующим образом:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

В открывшемся файле необходимо найти блок [mysqld] и в нем параметр с именем datadir в котором можно пописать нужный путь, где будут храниться базы данных. После того как путь был задан необходимо сохранить изменения, закрыть текстовый редактор и перезапустить СУБД при помощи команды:
sudo systemctl restart mysql

Выводы
В данной короткой статье было рассмотрено, где хранятся базы данных в СУБД MySQL. Также при желании можно изменить директорию для хранения. Есть ли у вас опты работы с СУБД MySQL? Расскажите в комментариях!
