Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Kelola File MDF di SQL Server 2019

Database SQL Server berisi file data primer, file data sekunder (opsional), dan file log transaksi.

File data primer dan sekunder berisi tabel, objek database, skema, dan data.

Ekstensi file dari file database utama adalah *.mdf , dan ekstensi file dari file data sekunder adalah *.ndf .

File log transaksi menyimpan semua perubahan yang dibuat oleh transaksi (menyisipkan, memperbarui, dan menghapus). Jika SQL Server restart tiba-tiba atau crash, mesin database roll kembali transaksi yang tidak lengkap sebelum titik kegagalan menggunakan file log transaksi.

Ekstensi file log transaksi adalah *.ldf . Anda mungkin ingin merujuk ke artikel ini untuk memahami arsitektur File Log Transaksi.

Pada artikel ini, saya akan menjelaskan bagaimana kita dapat mengelola file database (file MDF) di SQL Server 2019.

Artikel ini akan mencakup poin-poin berikut:

  1. Melihat detail file database menggunakan DMV dan SQL Server Management Studio.
  2. Lampirkan dan lepaskan File MDF database pengguna.
  3. Lampirkan dan lepaskan File MDF database sistem.

Melihat file database menggunakan tampilan manajemen dinamis

Untuk melihat detail file mdf database, kita bisa menggunakan sys.database_files dan sys.master_files . Query harus ditulis sebagai berikut:

use master
go
select DB_NAME(database_id),
name as [logical Name],
physical_name as [File Location],
state_desc as [State of the file],
Size [Size of data File],
case when convert(varchar,max_size) =-1 then 'Unlimited' else convert(varchar,max_size) end as [Maximum Size]
from sys.master_files where type_desc='ROWS'
and database_id >5

Karena contoh mengacu pada detail MDF untuk semua database, kita memerlukan kode yang berbeda untuk melihat file database tertentu. Untuk tujuan itu, kami menggunakan sys.database_files .

Skrip berikut akan mengambil detail SSISDB basis data:

use SSISDB
Go
select 
name as [logical Name],
physical_name as [File Location],
state_desc as [State of the file],
Size [Size of data File],
case when convert(varchar,max_size) =-1 then 'Unlimited' else convert(varchar,max_size) end as [Maximum Size]
from sys.database_files

Melihat file database menggunakan SQL Server Management Studio

Opsi untuk melihat daftar file MDF yang tersedia di SQL Server Management Studio (SSMS).

Di Studio Manajemen SQL Server, terhubung ke contoh SQL Server. Kemudian, luaskan Database -> Klik kanan pada basis data mana pun -> Klik Properti :

Di Properti Basis Data jendela, klik File . Ini akan menampilkan daftar database MDF dan LDF file:

Lepaskan dan lampirkan file MDF database pengguna

Ada dua cara untuk melepaskan dan melampirkan file MDF dari database Pengguna:

  1. Menggunakan SQL Server Management Studio.
  2. Menggunakan skrip T-SQL.

Lampirkan dan Lepas database menggunakan SSMS

Lampirkan database

Luncurkan SSMS -> Hubungkan ke contoh SQL Server -> Klik kanan pada Database -> Klik Lampirkan .

Ini akan membuka Lampirkan Basis Data jendela. Klik Tambah di jendela itu:

Di Temukan File Basis Data . yang baru jendela, jelajahi sistem file untuk menemukan MDF mengajukan. Klik dua kali.

File data terkait dan file log diisi dalam file terkait tampilan kisi di Lampirkan Basis Data jendela. Klik Oke untuk melampirkan database.

Setelah database terpasang, Anda dapat melihatnya di SQL Server Management Studio:

Lepaskan database

Luncurkan studio manajemen SQL Server dan sambungkan ke contoh SQL Server . Perluas daftar Database.

Klik kanan pada database yang diperlukan -> Tugas -> Klik Lepaskan .

Jika Anda ingin memutuskan secara paksa semua pengguna dan proses yang terhubung ke database, lakukan di Detach Database jendela.

Centang Putuskan Koneksi opsi di Database untuk dilepaskan bagian dan klik Oke .

Lampirkan dan Lepas database menggunakan T-SQL

Kita dapat menggunakan BUAT DATABASE DENGAN LAMPIRAN query dengan sintaks berikut:

USE [master]
GO
CREATE DATABASE [DatabaseName] ON 
( FILENAME = 'Path of Primary Database file (MDF)' ),
( FILENAME = N'Path of Secondary Database file (NDF)' ),
...
...
( FILENAME = N'Path of Transactional Log file (LDF)' )
 FOR ATTACH
GO

Untuk melampirkan database, jalankan kueri T-SQL berikut:

USE [master]
GO
CREATE DATABASE [WideWorldImporters] ON 
( FILENAME = N'C:\MSSQL\SQLData\WideWorldImporters.mdf' ),
( FILENAME = N'C:\MSSQL\SQLLog\WideWorldImporters.ldf' ),
( FILENAME = N'C:\MSSQL\SQLData\WideWorldImporters_UserData.ndf' )
 FOR ATTACH
GO

Selain itu, kita dapat menjalankan sp_detach_db prosedur tersimpan untuk melepaskan database.

Jika Anda ingin memutuskan pengguna secara paksa, Anda dapat menggunakan ALTER DATABASE SET SINGLE_USER perintah dalam skrip berikut:

Use [master]
GO
ALTER DATABASE [WideWorldImporters] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
EXEC sp_detach_db [WideWorldImporters]
GO

Mengelola file MDF database sistem

Misalkan kita ingin memindahkan file MDF database sistem (master, model, msdb, dan Tempdb) ke lokasi lain. Mari kita periksa prosesnya.

Pindahkan Basis Data Master

Untuk memindahkan master database, buka manajer konfigurasi SQL Server -> Klik Layanan SQL Server -> Klik kanan pada layanan SQL Server dari contoh SQL Server yang diinginkan (MSSQLSERVER ) -> Klik Properti :

Untuk mengubah master.mdf lokasi file, klik jalur file data dari file master.

master.mdf nilai jalur diikuti oleh -d ,dan mastlog.ldf nilai jalur diikuti oleh -l

Ganti nilai ini dengan yang berikut:

File Data:-dD:\MS_SQL\Data\master.mdf

File Log:-lD:\MS_SQL\Log\mastlog.ldf

Setelah nilainya diubah, klik Perbarui seperti terlihat pada ilustrasi di bawah ini:

Klik Oke untuk menyimpan nilai.

Kemudian hentikan layanan SQL Server dan salin file database ke lokasi baru. Setelah selesai, mulai Layanan SQL lagi.

Jalankan kueri di bawah ini untuk memverifikasi lokasi file.

select DB_NAME(database_id)[Database Name], physical_name [File Location] from sys.master_files 
where DB_NAME(database_id)='master'

Pindahkan Basis Data Model

Untuk memindahkan database Model ke drive lain, pertama-tama kita harus menjalankan perintah ALTER DATABASE MODIFY FILE. Ini berfungsi untuk mengubah lokasi di katalog sistem SQL Server.

Jalankan perintah di bawah ini:

ALTER DATABASE model
MODIFY FILE (NAME = modeldev, FILENAME = 'D:\MS_SQL\Data\model.mdf');
GO
ALTER DATABASE model
MODIFY FILE (NAME = modellog, FILENAME = 'D:\MS_SQL\Log\modellog.ldf');
GO

Kemudian, hentikan layanan SQL Server dengan menjalankan perintah di bawah ini di PowerShell:

/*Stop SQL Services*/
PS C:\> Stop-Service MSSQLSERVER -Force
/*Start SQL Services*/
PS C:\> Start-Service MSSQLSERVER 

Salin model.mdf dan modellog.ldf file ke lokasi baru dan memulai layanan.

Jalankan kueri di bawah ini untuk memverifikasi lokasi file:

select DB_NAME(database_id)[Database Name], physical_name [File Location] from sys.master_files 
where DB_NAME(database_id)='model'

Pindahkan Basis Data MSDB

Untuk memindahkan MSDB database ke drive lain, jalankan perintah ALTER DATABASE MODIFY FILE terlebih dahulu untuk mengubah lokasi di katalog sistem SQL Server:

ALTER DATABASE msdb
MODIFY FILE (NAME = MSDBData, FILENAME = 'D:\MS_SQL\Data\MSDBData.mdf');
GO
ALTER DATABASE msdb
MODIFY FILE (NAME = MSDBLog, FILENAME = 'D:\MS_SQL\Log\MSDBLog.ldf');
GO

Hentikan layanan SQL Server dengan menjalankan perintah berikut di PowerShell:

/*Stop SQL Services*/
PS C:\> Stop-Service MSSQLSERVER -Force
/*Start SQL Services*/
PS C:\> Start-Service MSSQLSERVER 

Salin MSDBData.mdf dan MSDBlog.ldf file ke lokasi baru dan memulai layanan.

Jalankan kueri di bawah ini untuk memverifikasi lokasi file:

select DB_NAME(database_id)[Database Name], physical_name [File Location] from sys.master_files 
where DB_NAME(database_id)='msdb'

Pindahkan Basis Data TempDB

Untuk memindahkan TempDB database ke drive lain, jalankan perintah ALTER DATABASE MODIFY FILE terlebih dahulu untuk mengubah lokasi file di katalog sistem SQL Server:

ALTER DATABASE tempdb
MODIFY FILE (NAME = tempdev, FILENAME = 'D:\MS_SQL\Data\tempdb.mdf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = temp2, FILENAME = 'D:\MS_SQL\Data\tempdb_mssql_2.ndf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = temp3, FILENAME = 'D:\MS_SQL\Data\tempdb_mssql_3.ndf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = temp4, FILENAME = 'D:\MS_SQL\Data\tempdb_mssql_4.ndf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = temp5, FILENAME = 'D:\MS_SQL\Data\tempdb_mssql_5.ndf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = temp6, FILENAME = 'D:\MS_SQL\Data\tempdb_mssql_6.ndf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = temp7, FILENAME = 'D:\MS_SQL\Data\tempdb_mssql_7.ndf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = temp8, FILENAME = 'D:\MS_SQL\Data\tempdb_mssql_8.ndf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = templog, FILENAME = 'D:\MS_SQL\Log\templog.ldf');
GO

Mulai ulang layanan SQL Server dengan menjalankan perintah berikut di PowerShell:

/*Restart SQL Services*/
PS C:\> Restart-Service MSSQLSERVER -Force

Jalankan kueri di bawah ini untuk memverifikasi lokasi file:

select DB_NAME(database_id)[Database Name], physical_name [File Location] from sys.master_files 
where DB_NAME(database_id)='tempdb'

Anda juga dapat menggunakan alat Log Transaksi dari perusahaan Devart – alat ini juga menyertakan opsi untuk melihat data file MDF dan LDF.

Ringkasan

Artikel ini menjelaskan file database database SQL Server dan cara melihat lokasi file MDF. Ini juga menggambarkan proses melampirkan dan melepaskan database dan menggambarkan proses langkah demi langkah memindahkan file data database sistem.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Konversi Nomor Bulan ke Nama Bulan di SQL Server (T-SQL)

  2. Bagaimana SHOWPLAN_XML Bekerja di SQL Server

  3. Konfigurasikan Pekerjaan SQL di SQL Server menggunakan T-SQL

  4. Menerapkan Paging Menggunakan OFFSET FETCH NEXT di SQL Server

  5. Grup concat di SQL Server