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

Jak odebrat datový soubor z databáze SQL Server (T-SQL)

Databáze SQL Server ukládají svá data a objekty do souborů. Každá databáze má alespoň jeden datový soubor (a soubor protokolu), ale není omezena pouze na jeden – může mít mnoho datových souborů. Pokud se někdy ocitnete v situaci, kdy potřebujete odstranit datový soubor z databáze, budete muset tento soubor nejprve vyprázdnit, než jej odstraníte.

Ale nebojte se, vyprázdněním souboru ve skutečnosti data nesmažete. Jednoduše migruje data souboru do jiných souborů ve stejné skupině souborů.

Níže uvedené příklady ukazují, jak vyprázdnit datový soubor a poté jej odstranit z databáze pomocí Transact-SQL.

Rychlý příklad

Zde je rychlý příklad, který vám ukáže, jak vyprázdnit datový soubor a odstranit jej z databáze:

-- Empty the file
DBCC SHRINKFILE (Solutions2, EMPTYFILE);  
GO 

-- Remove the file
ALTER DATABASE Solutions  
REMOVE FILE Solutions2;  
GO

Jak bylo vysvětleno, tímto se soubor vyprázdní a poté se zcela odstraní z databáze. Když použijete EMPTYFILE , to přesune všechna data ze souboru do jiných souborů ve stejné skupině souborů. Proto se musíte ujistit, že to není jediný soubor ve skupině souborů (jinak se zobrazí chyba). EmptyFile vás také ujišťuje, že do souboru nebudou přidána žádná nová data.

Delší příklad

V případě, že jste z předchozího příkladu zmateni, pojďme si projít proces vytvoření nové databáze, přidání nového datového souboru, jeho vyprázdnění a odstranění.

Vytvoření databáze a zobrazení informací o jejím datovém souboru

-- Switch to the master database
USE master;
GO

-- Create a new database
CREATE DATABASE Test;
GO

-- View it's data file and log file info
USE Test;  
GO  
SELECT file_id, name, type_desc, physical_name, size, max_size  
FROM sys.database_files ;  
GO

Nejprve se přepneme do hlavní databáze, než vytvoříme novou databázi s názvem Test . Poté přepneme na novou databázi a vybereme určité informace o jejích databázových souborech z sys.database_files zobrazení systémového katalogu.

Přidat nový datový soubor

-- Add a new data file
ALTER DATABASE Test   
ADD FILE (  
    NAME = Test2,  
    FILENAME = '/var/opt/mssql/data/Test2.mdf',  
    SIZE = 8MB
    );  
GO

-- View it's data file and log file info
USE Test;  
GO  
SELECT file_id, name, type_desc, physical_name, size, max_size  
FROM sys.database_files ;  
GO

Nyní přidáme nový datový soubor s logickým názvem Test2 a fyzickou cestu /var/opt/mssql/data/Test2.mdf (Všimněte si, že toto je cesta pro Linux/Mac. Pokud používáte Windows, použijte zpětná lomítka namísto dopředných lomítek). Znovu se zeptáme na sys.database_files zobrazení systémového katalogu, abychom mohli vidět podrobnosti o našem novém souboru.

Vyprázdněte datový soubor a odeberte jej

Pro účely tohoto příkladu předpokládejme, že databáze byla uvedena do provozu a datový soubor, který jsme právě vytvořili, byl načten daty. Nyní chceme tento soubor odstranit (z jakéhokoli důvodu). Než však soubor odstraníme, musíme jej vyprázdnit (migrovat jeho data do jiného souboru).

Zde je návod, jak to udělat:

-- Empty the new data file
DBCC SHRINKFILE (Test2, EMPTYFILE);  
GO

-- Remove the file
ALTER DATABASE Test  
REMOVE FILE Test2;  
GO 

-- View it's data file and log file info
USE Test;  
GO  
SELECT file_id, name, type_desc, physical_name, size, max_size  
FROM sys.database_files ;  
GO

Takže toto je stejné jako první příklad na této stránce, až na to, že naše databáze má jiný název. A v tomto příkladu se dotazujeme sys.database_files pro potvrzení, že soubor byl skutečně smazán.


  1. Jak vypsat záznamy s datem za posledních 10 dní?

  2. Jak důkladně vyčistit a znovu nainstalovat postgresql na ubuntu?

  3. Použití Dapper s Oracle

  4. Jak implementovat vztah many-to-many v PostgreSQL?