sql >> Databáze >  >> RDS >> Sqlserver

Správa souborů MDF na serveru SQL Server 2019

Databáze SQL Server obsahuje primární datové soubory, sekundární datové soubory (volitelné) a soubory protokolu transakcí.

Primární a sekundární datové soubory obsahují tabulky, databázové objekty, schémata a data.

Přípona souboru primární databáze je *.mdf a přípona sekundárního datového souboru je *.ndf .

Soubory protokolu transakcí ukládají všechny změny provedené transakcemi (vložení, aktualizace a odstranění). Pokud se SQL Server neočekávaně restartuje nebo selže, databázový stroj vrátí nedokončenou transakci zpět před bod selhání pomocí souboru protokolu transakcí.

Přípona souboru protokolu transakcí je *.ldf . Možná budete chtít nahlédnout do tohoto článku, abyste porozuměli architektuře souborů protokolu transakcí.

V tomto článku vysvětlím, jak můžeme spravovat databázové soubory (soubory MDF) v SQL Server 2019.

Článek se bude týkat následujících bodů:

  1. Zobrazte podrobnosti o databázovém souboru pomocí DMV a SQL Server Management Studio.
  2. Připojte a odpojte soubory MDF s uživatelskými databázemi.
  3. Připojte a odpojte soubory MDF systémových databází.

Zobrazení databázových souborů pomocí dynamických zobrazení správy

Pro zobrazení podrobností o databázových mdf souborech můžeme použít sys.database_files a sys.master_files . Dotaz by měl být napsán následovně:

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

Protože příklad odkazuje na podrobnosti MDF pro všechny databáze, potřebujeme k zobrazení konkrétních databázových souborů jiný kód. K tomuto účelu používáme sys.database_files .

Následující skript načte podrobnosti o SSISDB databáze:

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

Zobrazení databázových souborů pomocí SQL Server Management Studio

Možnost zobrazení seznamu souborů MDF dostupný v SQL Server Management Studio (SSMS).

V SQL Server Management Studio, připojit k instanci SQL Server. Poté rozbalte položku Databáze -> Klikněte pravým tlačítkem na libovolnou databázi -> Klikněte na Vlastnosti :

V části Vlastnosti databáze klikněte na Soubory . Zobrazí seznam databáze MDF a LDF soubory:

Odpojte a připojte soubory MDF databáze uživatelů

Existují dva způsoby, jak odpojit a připojit soubory MDF databáze uživatelů:

  1. Použití SQL Server Management Studio.
  2. Použití skriptu T-SQL.

Připojit a odpojit databázi pomocí SSMS

Připojte databázi

Spusťte SSMS -> Připojte se k instanci serveru SQL -> Klikněte pravým tlačítkem na Databáze -> Klikněte na Připojit .

Otevře se Připojit databáze okno. Klikněte na Přidat v tomto okně:

V novém Vyhledání databázových souborů v okně, procházejte systém souborů a vyhledejte MDF soubor. Dvakrát na něj klikněte.

Přidružené datové soubory a soubory protokolu jsou vyplněny v přidružených souborech zobrazení mřížky v Připojit databáze okno. Klikněte na OK pro připojení databáze.

Jakmile je databáze připojena, můžete ji vidět v SQL Server Management Studio:

Odpojit databázi

Spusťte SQL Server Management Studio a připojte se k instanci SQL Server . Rozbalte seznam databáze.

Klikněte pravým tlačítkem na potřebnou databázi -> Úkoly -> Klikněte na Odpojit .

Pokud chcete násilně odpojit všechny uživatele a procesy připojené k databázi, udělejte to v Odpojit databázi okno.

Zaškrtněte políčko Zrušit připojení možnost v Databázích k odpojení a klikněte na OK .

Připojit a odpojit databázi pomocí T-SQL

Můžeme použít CREATE DATABASE WITH ATTACH dotaz s následující syntaxí:

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

Chcete-li připojit databázi, spusťte následující dotaz 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

Můžeme také spustit sp_detach_db uložená procedura k odpojení databáze.

Pokud chcete uživatele násilně odpojit, můžete použít ALTER DATABASE SET SINGLE_USER příkaz v následujícím skriptu:

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

Správa souborů MDF systémové databáze

Předpokládejme, že chceme přesunout MDF soubory systémových databází (master, model, msdb a Tempdb) na jiné místo. Podívejme se na proces.

Přesun hlavní databáze

Chcete-li přesunout předlohu databáze, otevřete správce konfigurace SQL Server -> Klikněte na Služby SQL Server -> Klikněte pravým tlačítkem na službu SQL Server požadované instance SQL Server (MSSQLSERVER ) -> Klikněte na Vlastnosti :

Chcete-li změnit master.mdf umístění souboru, klikněte na cestu k datovému souboru hlavního souboru.

Soubor master.mdf za hodnotou cesty následuje -d a mastlog.ldf za hodnotou cesty následuje -l

Nahraďte tyto hodnoty následujícím:

Datový soubor:-dD:\MS_SQL\Data\master.mdf

Soubor protokolu:-lD:\MS_SQL\Log\mastlog.ldf

Jakmile se hodnoty změní, klikněte na Aktualizovat jak je znázorněno na obrázku níže:

Klikněte na OK pro uložení hodnot.

Potom zastavte služby SQL Server a zkopírujte soubory databáze do nového umístění. Po dokončení znovu spusťte službu SQL.

Spusťte níže uvedený dotaz a ověřte umístění souboru.

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

Přesuňte databázi modelů

Chcete-li přesunout databázi modelu na jiný disk, musíme nejprve spustit příkaz ALTER DATABASE MODIFY FILE. Slouží ke změně umístění v katalogu systému SQL Server.

Spusťte níže uvedený příkaz:

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

Poté zastavte služby SQL Server provedením níže uvedeného příkazu v PowerShell:

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

Zkopírujte model.mdf a modellog.ldf soubory do nového umístění a spusťte služby.

Spuštěním níže uvedeného dotazu ověřte umístění souboru:

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

Přesun databáze MSDB

Chcete-li přesunout MSDB databázi na jiný disk, nejprve spusťte příkaz ALTER DATABASE MODIFY FILE, abyste změnili umístění v systémovém katalogu 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

Zastavte služby SQL Server provedením následujícího příkazu v prostředí PowerShell:

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

Zkopírujte soubor MSDBData.mdf a MSDBLog.ldf soubory do nového umístění a spusťte služby.

Spuštěním níže uvedeného dotazu ověřte umístění souboru:

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

Přesun databáze TempDB

Chcete-li přesunout TempDB databázi na jiný disk, nejprve spusťte příkaz ALTER DATABASE MODIFY FILE, abyste změnili umístění souboru v systémovém katalogu 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

Restartujte služby SQL Server provedením následujícího příkazu v prostředí PowerShell:

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

Spuštěním níže uvedeného dotazu ověřte umístění souboru:

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

Můžete také použít nástroj Transaction Log od společnosti Devart – obsahuje také možnost prohlížení dat souborů MDF a LDF.

Shrnutí

Tento článek vysvětlil databázové soubory databáze SQL Server a způsoby zobrazení umístění souborů MDF. Popsal také procesy připojování a odpojování databází a ilustroval krok za krokem proces přesunu datových souborů systémových databází.


  1. Export dat MySQL do Excelu v PHP

  2. Vložte do tabulky MySQL nebo aktualizujte, pokud existuje

  3. Nainstalujte a nakonfigurujte MySQL Workbench na Ubuntu 16.04

  4. Více generátorů Hibernate sekvence pro jednu entitu s PostgreSQL