Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak usunąć plik danych z bazy danych programu SQL Server (T-SQL)

Bazy danych SQL Server przechowują swoje dane i obiekty w plikach. Każda baza danych zawiera co najmniej jeden plik danych (i plik dziennika), ale nie jest ograniczony tylko do jednego — może zawierać wiele plików danych. Jeśli kiedykolwiek znajdziesz się w sytuacji, w której musisz usunąć plik danych z bazy danych, musisz najpierw opróżnić ten plik, zanim go usuniesz.

Ale nie martw się, opróżnienie pliku w rzeczywistości nie usuwa danych. Po prostu migruje dane pliku do innych plików w tej samej grupie plików.

Poniższe przykłady pokazują, jak opróżnić plik danych, a następnie usunąć go z bazy danych za pomocą języka Transact-SQL.

Szybki przykład

Oto krótki przykład pokazujący, jak opróżnić plik danych i usunąć go z bazy danych:

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

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

Jak wyjaśniono, to opróżnia plik, a następnie usuwa go całkowicie z bazy danych. Gdy używasz EMPTYFILE , przenosi wszystkie dane z pliku do innych plików w tej samej grupie plików. Dlatego musisz upewnić się, że nie jest to jedyny plik w grupie plików (w przeciwnym razie pojawi się błąd). EmptyFile zapewnia również, że żadne nowe dane nie zostaną dodane do pliku.

Dłuższy przykład

W przypadku zdezorientowania poprzedniego przykładu, przejdźmy przez proces tworzenia nowej bazy danych, dodawania nowego pliku danych, a następnie opróżniania go, a następnie usuwania.

Utwórz bazę danych i wyświetl informacje o jej pliku danych

-- 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

Najpierw przełączamy się na główną bazę danych przed utworzeniem nowej bazy danych o nazwie Test . Następnie przełączamy się do nowej bazy danych i wybieramy określone informacje o jej plikach bazy danych z sys.database_files widok katalogu systemowego.

Dodaj nowy plik danych

-- 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

Teraz dodajemy nowy plik danych o logicznej nazwie Test2 i fizyczna ścieżka /var/opt/mssql/data/Test2.mdf (zauważ, że jest to ścieżka Linux/Mac. Jeśli używasz systemu Windows, użyj ukośników odwrotnych zamiast ukośników). Ponownie pytamy sys.database_files widok katalogu systemowego, dzięki czemu możemy zobaczyć szczegóły naszego nowego pliku.

Opróżnij plik danych i usuń go

Na potrzeby tego przykładu załóżmy, że baza danych została wprowadzona do produkcji, a utworzony przed chwilą plik danych został załadowany danymi. Teraz chcemy usunąć ten plik (z jakiegokolwiek powodu). Ale zanim usuniemy plik, musimy go opróżnić (przenieść jego dane do innego pliku).

Oto jak to zrobić:

-- 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

To jest jak pierwszy przykład na tej stronie, z tą różnicą, że nasza baza danych ma inną nazwę. W tym przykładzie pytamy sys.database_files aby potwierdzić, że plik został rzeczywiście usunięty.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapytanie w wielu bazach danych na tym samym serwerze

  2. Użyj OBJECT_NAME(), aby uzyskać nazwę obiektu z jego object_id w SQL Server

  3. Wstawianie zbiorcze programu SQL Server — część 2

  4. Jak korzystać z funkcji Stopwords i Stoplist, aby ulepszyć wyszukiwanie pełnotekstowe w programie SQL Server (FTS)

  5. Nieskończona pętla CTE z OPCJA (maksymalna rekurencja 0)