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

Как да премахнете файл с данни от база данни на SQL Server (T-SQL)

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

Но не се притеснявайте, изпразването на файл всъщност не изтрива данните. Той просто мигрира данните на файла към други файлове в същата файлова група.

Примерите по-долу показват как да изпразните файл с данни, след което да го премахнете от базата данни с помощта на Transact-SQL.

Бърз пример

Ето един бърз пример, който да ви покаже как да изпразните файл с данни и да го премахнете от базата данни:

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

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

Така че, както беше обяснено, това изпразва файла, след което го премахва напълно от базата данни. Когато използвате EMPTYFILE , това премества всички данни от файла в други файлове в същата файлова група. Следователно, ще трябва да се уверите, че това не е единственият файл във файловата група (в противен случай ще получите грешка). EmptyFile също така ви уверява, че няма да бъдат добавени нови данни към файла.

По-дълъг пример

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

Създайте база данни и прегледайте информацията за нейния файл с данни

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

Първо преминаваме към главната база данни, преди да създадем нова база данни, наречена Test . След това преминаваме към новата база данни и избираме определена информация за нейните файлове от базата данни от sys.database_files изглед на системния каталог.

Добавяне на нов файл с данни

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

Сега добавяме нов файл с данни с логическо име Test2 и физически път на /var/opt/mssql/data/Test2.mdf (обърнете внимание, че това е път за Linux/Mac. Ако използвате Windows, използвайте обратна наклонена черта вместо наклонена черта напред). Отново правим заявка за sys.database_files изглед на системния каталог, за да можем да видим подробностите за нашия нов файл.

Изпразнете файла с данни и го премахнете

За целите на този пример, нека приемем, че базата данни е въведена в производство и файлът с данни, който току-що създадохме, е зареден с данни. Сега искаме да премахнем този файл (по някаква причина). Но преди да премахнем файла, трябва да го изпразним (да мигрираме данните му в друг файл).

Ето как да направите това:

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

Така че това е точно като първия пример на тази страница, освен че нашата база данни има различно име. И в този пример ние отправяме заявка към sys.database_files за да потвърдите, че файлът наистина е изтрит.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да проверите резултатите от заданието на пакета SSIS, след като завърши изпълнението си?

  2. SQL Server на Linux

  3. Как да активирате CDC за набор от таблици ИЛИ да активирате за всички таблици в база данни в SQL Server - урок за SQL Server

  4. Неявно преобразуване на изходния формат на SSIS за дата и час

  5. OBJECTPROPERTY() срещу OBJECTPROPERTYEX() в SQL Server:Каква е разликата?