Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách xóa tệp dữ liệu khỏi cơ sở dữ liệu máy chủ SQL (T-SQL)

Cơ sở dữ liệu SQL Server lưu trữ dữ liệu và các đối tượng của chúng trong các tệp. Mỗi cơ sở dữ liệu có ít nhất một tệp dữ liệu (và một tệp nhật ký), nhưng nó không bị hạn chế chỉ một - nó có thể có nhiều tệp dữ liệu. Nếu bạn từng rơi vào tình huống cần xóa tệp dữ liệu khỏi cơ sở dữ liệu, trước tiên bạn cần làm trống tệp đó trước khi xóa.

Nhưng đừng lo lắng, việc làm trống một tệp không thực sự xóa dữ liệu. Nó chỉ đơn giản là di chuyển dữ liệu của tệp sang các tệp khác trong cùng một nhóm tệp.

Các ví dụ dưới đây trình bày cách làm trống tệp dữ liệu, sau đó xóa tệp đó khỏi cơ sở dữ liệu bằng Transact-SQL.

Ví dụ nhanh

Dưới đây là một ví dụ nhanh để chỉ cho bạn cách làm trống một tệp dữ liệu và xóa nó khỏi cơ sở dữ liệu:

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

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

Vì vậy, như đã giải thích, điều này làm trống tệp, sau đó xóa hoàn toàn khỏi cơ sở dữ liệu. Khi bạn sử dụng EMPTYFILE , điều này sẽ di chuyển tất cả dữ liệu từ tệp này sang các tệp khác trong cùng một nhóm tệp. Do đó, bạn cần đảm bảo rằng đây không phải là tệp duy nhất trong nhóm tệp (nếu không, bạn sẽ gặp lỗi). EmptyFile cũng đảm bảo với bạn rằng sẽ không có dữ liệu mới nào được thêm vào tệp.

Một ví dụ dài hơn

Trong trường hợp bạn cảm thấy bối rối với ví dụ trước, hãy xem qua quy trình tạo cơ sở dữ liệu mới, thêm tệp dữ liệu mới, sau đó làm trống rồi xóa.

Tạo cơ sở dữ liệu và xem thông tin tệp dữ liệu của nó

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

Đầu tiên, chúng tôi chuyển sang cơ sở dữ liệu chính trước khi tạo cơ sở dữ liệu mới có tên là Test . Sau đó, chúng tôi chuyển sang cơ sở dữ liệu mới và chọn một số thông tin nhất định về các tệp cơ sở dữ liệu của nó từ sys.database_files chế độ xem danh mục hệ thống.

Thêm tệp dữ liệu mới

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

Bây giờ chúng tôi thêm một tệp dữ liệu mới có tên logic là Test2 và một đường dẫn vật lý của /var/opt/mssql/data/Test2.mdf (lưu ý rằng đây là đường dẫn Linux / Mac. Nếu sử dụng Windows, hãy sử dụng dấu gạch chéo ngược thay vì dấu gạch chéo về phía trước). Một lần nữa, chúng tôi truy vấn sys.database_files chế độ xem danh mục hệ thống để chúng tôi có thể xem chi tiết về tệp mới của mình.

Làm trống Tệp Dữ liệu và Xóa nó

Đối với mục đích của ví dụ này, giả sử rằng cơ sở dữ liệu đã được đưa vào sản xuất và tệp dữ liệu chúng ta vừa tạo đã được tải lên đầy dữ liệu. Bây giờ chúng tôi muốn loại bỏ tệp đó (vì bất kỳ lý do gì). Nhưng trước khi xóa tệp, chúng ta cần làm trống nó (di chuyển dữ liệu của nó sang một tệp khác).

Đây là cách thực hiện điều đó:

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

Vì vậy, đây giống như ví dụ đầu tiên trên trang này, ngoại trừ cơ sở dữ liệu của chúng tôi có tên khác. Và trong ví dụ này, chúng tôi truy vấn sys.database_files để xác nhận rằng tệp thực sự đã bị xóa.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server 2016:Tạo cơ sở dữ liệu

  2. Cách hoạt động của câu lệnh IF trong SQL Server

  3. Tập lệnh để loại bỏ tất cả các kết nối đến cơ sở dữ liệu (Hơn RESTRICTED_USER ROLLBACK)

  4. Cách khắc phục “Lược đồ phân vùng‘… ’không có bất kỳ nhóm tệp nào được sử dụng tiếp theo” trong SQL Server

  5. Khắc phục sự cố khi làm việc với ngày và giờ trong SQL Server