Как найти путь к базе sql

I am using VS2012 and I have a database created:

(localdb)v11.0 (SQL Server 11.0.2100 - T61Alan)

How can I find out the physical location of this database. How can I back this up? Can I just make a copy of the files, move these to another location and start the database again.

Here is my connection string:

<add name="DB1Context" connectionString="Data Source=(LocalDb)v11.0;Initial Catalog=DB1;Integrated Security=SSPI;" providerName="System.Data.SqlClient" />

asked Aug 13, 2013 at 6:46

Alan2's user avatar

0

It is quite confusing for people who touch with Entity Framework the first time.

If you use Code First, an mdf file is generated at %USERPROFILE% (e.g. C:Users<username>).

If you use Database First, you create a database under SQL Server Object Explorer (not Server Explorer!), an mdf file will be generated at %LOCALAPPDATA%MicrosoftMicrosoft SQL Server Local DBInstancesMSSQLLocalDB.

Ray's user avatar

Ray

7,7227 gold badges57 silver badges90 bronze badges

answered Jan 17, 2017 at 4:19

code4j's user avatar

code4jcode4j

4,1785 gold badges34 silver badges51 bronze badges

3

Are you saying you can see it listed in SQL Server Management Studio? Right click on DataBase -> Properties -> Files will tell you where on your hard disk it lives. If you backup the mdf, be sure to back up the ldf too.

enter image description here

Alternatively, you can right click on the DB, and choose Tasks -> Backup. This will make a a single .bak file for you, and you don’t need to worry about the mdf/ldf.

Andrey Morozov's user avatar

answered Aug 13, 2013 at 6:50

Paul McLean's user avatar

Paul McLeanPaul McLean

3,4306 gold badges25 silver badges36 bronze badges

1

http://technet.microsoft.com/en-us/library/hh510202.aspx

The system database files for the database are stored in the users’
local AppData path which is normally hidden. For example
C:Users–user–AppDataLocalMicrosoftMicrosoft SQL Server Local
DBInstancesLocalDBApp1. User database files are stored where the
user designates, typically somewhere in the C:Users\Documents
folder.

answered Aug 13, 2013 at 6:57

Jonathan's user avatar

JonathanJonathan

5,9531 gold badge26 silver badges35 bronze badges

1

Try this one –

DECLARE 
      @SQL NVARCHAR(1000)
    , @DB_NAME NVARCHAR(100) = 'AdventureWorks2008R2'

SELECT TOP 1 @SQL = '
    BACKUP DATABASE [' + @DB_NAME + '] 
    TO DISK = ''' + REPLACE(mf.physical_name, '.mdf', '.bak') + ''''
FROM sys.master_files mf
WHERE mf.[type] = 0
    AND mf.database_id = DB_ID(@DB_NAME)

PRINT @SQL
EXEC sys.sp_executesql @SQL

Output –

BACKUP DATABASE [AdventureWorks2008R2] 
TO DISK = 'D:DATABASESQL2012AdventureWorks2008R2.bak'

answered Aug 13, 2013 at 7:05

Devart's user avatar

DevartDevart

119k23 gold badges163 silver badges185 bronze badges

Open Windows registry editor and navigate to key HKEY_LOCAL_MACHINESOFTWAREMicrosoftMicrosoft SQL Server Local DBInstalled Versions. Look beneath the version key of the SQL Server instance being targeted e.g. 11.0 for SQL 2012, and see its InstanceAPIPath value for file system location of the localdb’s.

Note that at full list of SQL server versions mapped to release name and year can be found here

answered Jul 24, 2015 at 21:49

John K's user avatar

John KJohn K

28.4k31 gold badges139 silver badges228 bronze badges

2

This PowerShell script, will give you the default location for localdb .mdf files:

[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO') | out-null
(New-Object Microsoft.SqlServer.Management.Smo.Server("(localdb)$instancename")).DefaultFile

where $instancename is the name of the localdb instance you want to check for. You can get a list of localdb instances by running

sqllocaldb i

answered Oct 28, 2015 at 12:19

Jon List's user avatar

Jon ListJon List

1,5041 gold badge14 silver badges20 bronze badges

I tried everything here and could not find them anywhere. I finally found them by searching *.mdf in file explorer. They were in C:UsersusersourcereposCallNoteApp_Data.

answered Jun 10, 2022 at 22:12

cytek04's user avatar

cytek04cytek04

3953 silver badges14 bronze badges

Обновлено Обновлено: 20.07.2020
Опубликовано Опубликовано: 12.07.2018

Тематические термины: MySQL, MariaDB, Linux.

В статье пойдет речь о просмотре и смене пути расположения файлов баз данных MySQL. Приведенные примеры выполнены на CentOS 7 — также они будут работать на Ubuntu и многих других дистрибутивах Linux, FreeBSD и Windows.

Просмотр путей
    Командная строка
    Оболочка MySQL
    phpMyAdmin
Смена расположения баз
Смотрите также

Посмотреть текущий путь

Увидеть, где хранятся базы можно несколькими способами. 

Способ 1. Командная строка Linux.

В командной строке вводим:

systemctl status mysql || systemctl status mariadb

* для Windows используем оснастку Службы. Для FreeBSD используем команду service mysql-server stop.

Пример ответа:

mariadb.service – MariaDB database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
   Active: active (running) since Ср 2018-07-11 15:38:16 MSK; 23h ago
  Process: 1067 ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID (code=exited, status=0/SUCCESS)
  Process: 992 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n (code=exited, status=0/SUCCESS)
 Main PID: 1066 (mysqld_safe)
   CGroup: /system.slice/mariadb.service
           ??1066 /bin/sh /usr/bin/mysqld_safe –basedir=/usr
           ??1248 /usr/libexec/mysqld –basedir=/usr –datadir=/var/lib/mysql –plugin-dir=/usr/lib64/mysql/plugin –log-error=/var/log/mariadb/mariadb.log –pid-file=/var/run/mariadb/mariadb.pid –socket…

* в выделенном фрагменте /var/lib/mysql — путь до файлов базы данных.

Способ 2. Командная оболочка MySQL.

Данный способ является более универсальным — он подойдет для любого дистрибутива Linux, FreeBSD, Windows. Также, метод универсален с точки зрения метода установки MySQL — чистая установка или в составе готовой сборки (Open Server, Xampp, Denwer …).

Заходим под пользователем root в командную оболочку СУБД:

mysql -uroot -p

Вводим:

> SHOW VARIABLES WHERE Variable_Name LIKE “datadir”;

или

> select @@datadir;

Пример ответа:

+—————+—————–+
| Variable_name | Value           |
+—————+—————–+
| datadir       | /var/lib/mysql/ |
+—————+—————–+

Способ 3. Через phpMyAdmin.

Если у нас нет доступа к серверу по SSH или удаленному рабочему столу, запрос можно сделать в phpMyAdmin:

Пример создания запроса на получение пути к базе MySQL в phpMyAdmin

Смена пути

Останавливаем сервер баз данных:

systemctl stop mysql || systemctl stop mariadb

Создаем новый каталог, например:

mkdir /home/mysql

Переносим содержимое старого каталога в новый:

mv /var/lib/mysql/* /home/mysql/

Задаем права и владельца для нового каталога:

chown mysql:mysql /home/mysql

chmod 755 /home/mysql

Открываем конфигурационный файл my.cnf:

vi /etc/my.cnf.d/server.cnf

* в разных версиях mysql и mariadb могут использоваться разные пути:

  • /etc/my.cnf.
  • /etc/my.cnf.d/server.cnf.
  • /etc/my.cnf.d/mariadb-server.cnf.
  • В Windows это my.ini.

и задаем новый путь:

[mysqld]
datadir = /home/mysql

Запускаем сервер:

systemctl start mysql || systemctl start mariadb

Смотрите также

Установка MariaDB на CentOS 7

Как восстановить базу MySQL

Создание и удаление баз в MySQL/MariaDB

Экспорт баз данных MariaDB/MySQL в phpMyAdmin

Дмитрий Моск — частный мастер

Была ли полезна вам эта инструкция?

Да            Нет

I have done this like this. The sample is for the any database. When you are not sure what the default location is from within the code you can always create a new temporarely database and remove after using this script:

DECLARE @databasetocheck AS nvarchar(128) = 'AnotherTestDb'
SELECT  '[' + @@SERVERNAME + ']' AS [Server Name],
        [sdb].[name] AS [Database Name],
        [saf].[name] AS [Logical File Name],
        [saf].[filename] AS [Full path and name],
        LEFT([saf].[filename], (LEN([saf].[filename]) - LEN(REVERSE(LEFT(REVERSE([saf].[filename]), CHARINDEX('', REVERSE([saf].[filename])) -1))))) AS [File Location],
        LEFT(RIGHT([saf].[filename], (LEN(REVERSE(LEFT(REVERSE([saf].[filename]), CHARINDEX('', REVERSE([saf].[filename])) -1))))), CHARINDEX('.', RIGHT([saf].[filename], (LEN(REVERSE(LEFT(REVERSE([saf].[filename]), CHARINDEX('', REVERSE([saf].[filename])) -1))))))-1)AS [Physical File Name],
        RIGHT([saf].[filename], (LEN(REVERSE(LEFT(REVERSE([saf].[filename]), CHARINDEX('.', REVERSE([saf].[filename])) -1))))) AS [File Extension]
FROM    [master].[dbo].[sysaltfiles] [saf], [master].[dbo].[sysdatabases] [sdb]
WHERE   [saf].[dbid] = [sdb].[dbid]
AND     [sdb].[name] = @databasetocheck
GO

Or:

-- Find *.MDF and *.LDF database files and corresponding locations for a all databases
SELECT  '[' + @@SERVERNAME + ']' AS [Server Name],
        [sdb].[name] AS [Database Name],
        [saf].[name] AS [Logical File Name],
        [saf].[filename] AS [Full path and name],
        LEFT([saf].[filename], (LEN([saf].[filename]) - LEN(REVERSE(LEFT(REVERSE([saf].[filename]), CHARINDEX('', REVERSE([saf].[filename])) -1))))) AS [File Location],
        LEFT(RIGHT([saf].[filename], (LEN(REVERSE(LEFT(REVERSE([saf].[filename]), CHARINDEX('', REVERSE([saf].[filename])) -1))))), CHARINDEX('.', RIGHT([saf].[filename], (LEN(REVERSE(LEFT(REVERSE([saf].[filename]), CHARINDEX('', REVERSE([saf].[filename])) -1))))))-1)AS [Physical File Name],
        RIGHT([saf].[filename], (LEN(REVERSE(LEFT(REVERSE([saf].[filename]), CHARINDEX('.', REVERSE([saf].[filename])) -1))))) AS [File Extension]
FROM    [master].[dbo].[sysaltfiles] [saf], [master].[dbo].[sysdatabases] [sdb]
WHERE   ([saf].[fileid] = 1 OR [saf].[fileid] = 2)
AND     [saf].[dbid] = [sdb].[dbid]
GO

Good luck!

Где хранятся данные MySQL на вашем компьютере

От автора: а что это вы под ногами ищете? Базу данных? Поверьте, скорее все, она никуда не делась, и лежит «целехонькая» на вашем ПК или сервере! Там уже смотрели? Наверное, вы просто не знаете, где хранятся данные 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, где хранятся базы. Надеемся, нам удалось научить вас этому!

это зависит от того, путь по умолчанию для файлов данных и журналов, или нет.

если путь задан явно в Properties=>Database Settings=>Database default locations затем SQL server сохраняет его в SoftwareMicrosoftMSSQLServerMSSQLServer на DefaultData и DefaultLog значения.

однако, если эти параметры не заданы явно, SQL server использует пути данных и журналов базы данных master.

Ниже приведен сценарий, который охватывает оба случая. Это упрощенная версия запроса, который SQL Management Studio работает.

кроме того, обратите внимание, что я использую xp_instance_regread вместо xp_regread, так что этот скрипт будет работать для любого экземпляра, по умолчанию или именованным.

declare @DefaultData nvarchar(512)
exec master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE', N'SoftwareMicrosoftMSSQLServerMSSQLServer', N'DefaultData', @DefaultData output

declare @DefaultLog nvarchar(512)
exec master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE', N'SoftwareMicrosoftMSSQLServerMSSQLServer', N'DefaultLog', @DefaultLog output

declare @DefaultBackup nvarchar(512)
exec master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE', N'SoftwareMicrosoftMSSQLServerMSSQLServer', N'BackupDirectory', @DefaultBackup output

declare @MasterData nvarchar(512)
exec master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE', N'SoftwareMicrosoftMSSQLServerMSSQLServerParameters', N'SqlArg0', @MasterData output
select @MasterData=substring(@MasterData, 3, 255)
select @MasterData=substring(@MasterData, 1, len(@MasterData) - charindex('', reverse(@MasterData)))

declare @MasterLog nvarchar(512)
exec master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE', N'SoftwareMicrosoftMSSQLServerMSSQLServerParameters', N'SqlArg2', @MasterLog output
select @MasterLog=substring(@MasterLog, 3, 255)
select @MasterLog=substring(@MasterLog, 1, len(@MasterLog) - charindex('', reverse(@MasterLog)))

select 
    isnull(@DefaultData, @MasterData) DefaultData, 
    isnull(@DefaultLog, @MasterLog) DefaultLog,
    isnull(@DefaultBackup, @MasterLog) DefaultBackup

вы можете достичь того же результата с помощью SMO. Ниже приведен пример C#, но вы можете использовать любой другой язык .NET или PowerShell.

using (var connection = new SqlConnection("Data Source=.;Integrated Security=SSPI"))
{
    var serverConnection = new ServerConnection(connection);
    var server = new Server(serverConnection);
    var defaultDataPath = string.IsNullOrEmpty(server.Settings.DefaultFile) ? server.MasterDBPath : server.Settings.DefaultFile;
    var defaultLogPath = string.IsNullOrEmpty(server.Settings.DefaultLog) ? server.MasterDBLogPath : server.Settings.DefaultLog;
}

это намного проще в SQL Server 2012 и выше, предполагая, что у вас есть пути по умолчанию (что, вероятно, всегда правильно):

select 
    InstanceDefaultDataPath = serverproperty('InstanceDefaultDataPath'),
    InstanceDefaultLogPath = serverproperty('InstanceDefaultLogPath')

Добавить комментарий