Database SQL Server menyimpan data dan objeknya dalam file. Setiap database memiliki setidaknya satu file data (dan file log), tetapi tidak terbatas hanya pada satu – bisa memiliki banyak file data. Jika Anda pernah berada dalam situasi di mana Anda perlu menghapus file data dari database, Anda harus mengosongkan file tersebut terlebih dahulu, sebelum menghapusnya.
Tapi jangan khawatir, mengosongkan file tidak benar-benar menghapus data. Ini hanya memindahkan data file ke file lain dalam grup file yang sama.
Contoh di bawah ini menunjukkan cara mengosongkan file data, lalu menghapusnya dari database menggunakan Transact-SQL.
Contoh Singkat
Berikut adalah contoh cepat untuk menunjukkan kepada Anda cara mengosongkan file data dan menghapusnya dari database:
-- Empty the file DBCC SHRINKFILE (Solutions2, EMPTYFILE); GO -- Remove the file ALTER DATABASE Solutions REMOVE FILE Solutions2; GO
Jadi seperti yang dijelaskan, ini mengosongkan file, lalu menghapusnya sepenuhnya dari database. Saat Anda menggunakan EMPTYFILE
, ini memindahkan semua data dari file ke file lain dalam grup file yang sama. Oleh karena itu, Anda harus memastikan ini bukan satu-satunya file di grup file (jika tidak, Anda akan mendapatkan kesalahan). EmptyFile juga meyakinkan Anda bahwa tidak ada data baru yang akan ditambahkan ke file.
Contoh yang Lebih Panjang
Jika Anda bingung dengan contoh sebelumnya, mari kita ikuti proses membuat database baru, menambahkan file data baru, lalu mengosongkannya, lalu menghapusnya.
Membuat Database dan Melihat Informasi File Datanya
-- 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
Pertama kita beralih ke database master sebelum membuat database baru bernama Test
. Kami kemudian beralih ke database baru dan memilih info tertentu tentang file database dari sys.database_files
tampilan katalog sistem.
Tambahkan File Data Baru
-- 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
Kami sekarang menambahkan file data baru dengan nama logis Test2
dan jalur fisik /var/opt/mssql/data/Test2.mdf
(perhatikan bahwa ini adalah jalur Linux/Mac. Jika menggunakan Windows, gunakan garis miring terbalik alih-alih garis miring ke depan). Sekali lagi kami menanyakan sys.database_files
tampilan katalog sistem sehingga kami dapat melihat detail file baru kami.
Kosongkan File Data dan Hapus
Untuk keperluan contoh ini, mari kita asumsikan bahwa database telah dimasukkan ke dalam produksi dan file data yang baru saja kita buat telah dimuat dengan data. Sekarang kami ingin menghapus file itu (untuk alasan apa pun). Namun sebelum kita menghapus file tersebut, kita perlu mengosongkannya (memigrasikan datanya ke file lain).
Berikut cara melakukannya:
-- 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
Jadi ini seperti contoh pertama di halaman ini, kecuali database kami memiliki nama yang berbeda. Dan dalam contoh ini, kami meminta sys.database_files
untuk mengonfirmasi bahwa file tersebut memang telah dihapus.