Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Управление на MDF файлове в SQL Server 2019

Базата данни на SQL Server съдържа първични файлове с данни, вторични файлове с данни (по избор) и регистрационни файлове на транзакциите.

Основните и вторичните файлове с данни съдържат таблици, обекти на база данни, схеми и данни.

Файловото разширение на основния файл на базата данни е *.mdf , а разширението на файла с вторични данни е *.ndf .

Регистрационните файлове на транзакциите съхраняват всички промени, направени от транзакциите (вмъкване, актуализиране и изтриване). Ако SQL Server се рестартира неочаквано или се срине, механизмът на базата данни връща незавършената транзакция преди точката на отказ, като използва регистрационния файл на транзакциите.

Разширението на регистрационния файл на транзакциите е *.ldf . Може да искате да се обърнете към тази статия, за да разберете архитектурата на регистрационните файлове на транзакциите.

В тази статия ще обясня как можем да управляваме файловете на базата данни (MDF файлове) в SQL Server 2019.

Статията ще обхване следните точки:

  1. Прегледайте подробностите за файла на базата данни с помощта на DMV и SQL Server Management Studio.
  2. Прикачете и отделете MDF файловете на потребителските бази данни.
  3. Прикачете и отделете MDF файлове на системните бази данни.

Преглеждайте файловете на базата данни с помощта на динамични изгледи за управление

За да видите подробностите за mdf файловете на базата данни, можем да използваме sys.database_files и sys.master_files . Заявката трябва да бъде написана, както следва:

use master
go
select DB_NAME(database_id),
name as [logical Name],
physical_name as [File Location],
state_desc as [State of the file],
Size [Size of data File],
case when convert(varchar,max_size) =-1 then 'Unlimited' else convert(varchar,max_size) end as [Maximum Size]
from sys.master_files where type_desc='ROWS'
and database_id >5

Тъй като примерът се отнася до подробностите за MDF за всички бази данни, имаме нужда от различен код, за да прегледаме конкретните файлове на базата данни. За тази цел използваме sys.database_files .

Следният скрипт ще извлече подробностите за SSISDB база данни:

use SSISDB
Go
select 
name as [logical Name],
physical_name as [File Location],
state_desc as [State of the file],
Size [Size of data File],
case when convert(varchar,max_size) =-1 then 'Unlimited' else convert(varchar,max_size) end as [Maximum Size]
from sys.database_files

Прегледайте файловете на базата данни с помощта на SQL Server Management Studio

Опцията за преглед на списъка с MDF файлове, наличен в SQL Server Management Studio (SSMS).

В SQL Server Management Studio, свържете се с екземпляра на SQL Server. След това разгънете Бази данни -> Щракнете с десния бутон върху която и да е база данни -> Щракнете върху Свойства :

ВСвойства на базата данни прозорец, щракнете върху Файлове . Той ще представи списъка на базата данни MDF иLDF файлове:

Отделете и прикачете MDF файловете на потребителската база данни

Има два начина за отделяне и прикачване на MDF файлове от потребителската база данни:

  1. Използване на SQL Server Management Studio.
  2. Използване на T-SQL скрипт.

Прикачване и отделяне на база данни с помощта на SSMS

Прикачете базата данни

Стартирайте SSMS -> Свързване с екземпляр на SQL Server -> Щракнете с десния бутон върху База данни -> Щракнете върху Прикачване .

Ще отвори Прикачване на бази данни прозорец. Кликнете върху Добавяне в този прозорец:

В новия Намерете файлове с база данни прозорец, прегледайте файловата система, за да намерите MDF файл. Щракнете двукратно върху него.

Свързаните файлове с данни и регистрационни файлове се попълват в свързаните файлове изглед на мрежа в Прикачване на бази данни прозорец. Щракнете върху OK за да прикачите базата данни.

След като базата данни е прикачена, можете да я видите в SQL Server Management Studio:

Отделете базата данни

Стартирайте студио за управление на SQL Server и се свържете с екземпляр на SQL Server . Разширете списъка с бази данни.

Щракнете с десния бутон върху необходиматабаза от данни -> Задачи -> Кликнете върху Отделяне .

Ако искате принудително да изключите всички потребители и процеси, свързани с базата данни, направете това в Откачване на база данни прозорец.

Поставете отметка до Прекратяване на връзки опция в Бази данни за отделяне раздел и щракнете върху OK .

Прикачете и отделете базата данни с помощта на T-SQL

Можем да използваме СЪЗДАВАНЕ НА БАЗА ДАННИ С ПРИКАКВАНЕ заявка със следния синтаксис:

USE [master]
GO
CREATE DATABASE [DatabaseName] ON 
( FILENAME = 'Path of Primary Database file (MDF)' ),
( FILENAME = N'Path of Secondary Database file (NDF)' ),
...
...
( FILENAME = N'Path of Transactional Log file (LDF)' )
 FOR ATTACH
GO

За да прикачите базата данни, изпълнете следната T-SQL заявка:

USE [master]
GO
CREATE DATABASE [WideWorldImporters] ON 
( FILENAME = N'C:\MSSQL\SQLData\WideWorldImporters.mdf' ),
( FILENAME = N'C:\MSSQL\SQLLog\WideWorldImporters.ldf' ),
( FILENAME = N'C:\MSSQL\SQLData\WideWorldImporters_UserData.ndf' )
 FOR ATTACH
GO

Също така можем да стартираме sp_detach_db съхранена процедура за отделяне на базата данни.

Ако искате да изключите потребителите принудително, можете да използвате ALTER DATABASE SET SINGLE_USER команда в следния скрипт:

Use [master]
GO
ALTER DATABASE [WideWorldImporters] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
EXEC sp_detach_db [WideWorldImporters]
GO

Управлявайте MDF файловете на системната база данни

Да предположим, че искаме да преместим MDF файловете на системните бази данни (главен, модел, msdb и Tempdb) на друго място. Нека да разгледаме процеса.

Преместете основната база данни

За преместване на главена база данни, отворете диспечера на конфигурацията на SQL Server -> Щракнете върху SQL Server Services -> Щракнете с десния бутон върху услугата SQL Server на желания екземпляр на SQL Server (MSSQLSERVER ) -> Щракнете върху Свойства :

За да промените master.mdf местоположение на файла, щракнете върху пътя на файла с данни на главния файл.

master.mdf стойността на пътя е последвана от -d , и mastlog.ldf стойността на пътя е последвана от -l

Заменете тези стойности със следното:

Файл с данни:-dD:\MS_SQL\Data\master.mdf

Регистрационен файл:-lD:\MS_SQL\Log\mastlog.ldf

След като стойностите се променят, щракнете върху Актуализиране както е показано на илюстрацията по-долу:

Щракнете върху OK за да запазите стойностите.

След това спрете услугите на SQL Server и копирайте файловете на базата данни на ново място. След приключване стартирайте отново SQL услугата.

Изпълнете заявката по-долу, за да проверите местоположението на файла.

select DB_NAME(database_id)[Database Name], physical_name [File Location] from sys.master_files 
where DB_NAME(database_id)='master'

Преместете моделната база данни

За да преместим базата данни на модела на друго устройство, първо трябва да изпълним команда ALTER DATABASE MODIFY FILE. Той служи за промяна на местоположението в системния каталог на SQL Server.

Изпълнете командата по-долу:

ALTER DATABASE model
MODIFY FILE (NAME = modeldev, FILENAME = 'D:\MS_SQL\Data\model.mdf');
GO
ALTER DATABASE model
MODIFY FILE (NAME = modellog, FILENAME = 'D:\MS_SQL\Log\modellog.ldf');
GO

След това спрете услугите на SQL Server, като изпълните командата по-долу в PowerShell:

/*Stop SQL Services*/
PS C:\> Stop-Service MSSQLSERVER -Force
/*Start SQL Services*/
PS C:\> Start-Service MSSQLSERVER 

Копирайте model.mdf и modellog.ldf файлове на ново място и стартирайте услугите.

Изпълнете заявката по-долу, за да проверите местоположението на файла:

select DB_NAME(database_id)[Database Name], physical_name [File Location] from sys.master_files 
where DB_NAME(database_id)='model'

Преместете MSDB базата данни

За да преместите MSDB база данни на друго устройство, първо изпълнете команда ALTER DATABASE MODIFY FILE, за да промените местоположението в системния каталог на SQL Server:

ALTER DATABASE msdb
MODIFY FILE (NAME = MSDBData, FILENAME = 'D:\MS_SQL\Data\MSDBData.mdf');
GO
ALTER DATABASE msdb
MODIFY FILE (NAME = MSDBLog, FILENAME = 'D:\MS_SQL\Log\MSDBLog.ldf');
GO

Спрете услугите на SQL Server, като изпълните следната команда в PowerShell:

/*Stop SQL Services*/
PS C:\> Stop-Service MSSQLSERVER -Force
/*Start SQL Services*/
PS C:\> Start-Service MSSQLSERVER 

Копирайте MSDBData.mdf и MSDBLog.ldf файлове на новото място и стартирайте услугите.

Изпълнете заявката по-долу, за да проверите местоположението на файла:

select DB_NAME(database_id)[Database Name], physical_name [File Location] from sys.master_files 
where DB_NAME(database_id)='msdb'

Преместете базата данни TempDB

За да преместите TempDB база данни на друго устройство, първо изпълнете команда ALTER DATABASE MODIFY FILE, за да промените местоположението на файла в системния каталог на SQL Server:

ALTER DATABASE tempdb
MODIFY FILE (NAME = tempdev, FILENAME = 'D:\MS_SQL\Data\tempdb.mdf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = temp2, FILENAME = 'D:\MS_SQL\Data\tempdb_mssql_2.ndf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = temp3, FILENAME = 'D:\MS_SQL\Data\tempdb_mssql_3.ndf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = temp4, FILENAME = 'D:\MS_SQL\Data\tempdb_mssql_4.ndf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = temp5, FILENAME = 'D:\MS_SQL\Data\tempdb_mssql_5.ndf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = temp6, FILENAME = 'D:\MS_SQL\Data\tempdb_mssql_6.ndf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = temp7, FILENAME = 'D:\MS_SQL\Data\tempdb_mssql_7.ndf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = temp8, FILENAME = 'D:\MS_SQL\Data\tempdb_mssql_8.ndf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = templog, FILENAME = 'D:\MS_SQL\Log\templog.ldf');
GO

Рестартирайте услугите на SQL Server, като изпълните следната команда в PowerShell:

/*Restart SQL Services*/
PS C:\> Restart-Service MSSQLSERVER -Force

Изпълнете заявката по-долу, за да проверите местоположението на файла:

select DB_NAME(database_id)[Database Name], physical_name [File Location] from sys.master_files 
where DB_NAME(database_id)='tempdb'

Можете също да използвате инструмента за дневник на транзакциите на компанията Devart – той включва и опцията за преглед на данните за MDF и LDF файловете.

Резюме

Тази статия обяснява файловете на базата данни на базата данни на SQL Server и начините за преглед на местоположенията на MDF файловете. Той също така описва процесите на прикачване и отделяне на базите данни и илюстрира стъпка по стъпка процеса на преместване на файлове с данни на системните бази данни.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. какъв е проблемът с AttachDbFilename

  2. ПОКАЖЕТЕ БАЗА ДАННИ Еквивалент в SQL Server – sp_databases

  3. Трябва ли да изберете типовете данни MONEY или DECIMAL(x,y) в SQL Server?

  4. Грешка на SQL Server 4104:Идентификаторът от няколко части не може да бъде обвързан.

  5. Динамична PIVOT заявка на SQL Server?