Artikel ini menunjukkan berbagai metode untuk melampirkan file MDF SQL Server. Pertama, izinkan saya menjelaskan tentang file database
Database SQL Server memiliki tiga jenis file
- File Data Primer ATAU File MDF
- File data sekunder ATAU File NDF
- File Log ATAU File LOG
File data primer ATAU file MDF
Database SQL Server menyimpan data dalam file MDF. Khas,. mdf adalah ekstensi pilihan dari file database utama. Ini bukan jenis file. Anda dapat menggunakan ekstensi lain (*. gbn) untuk membuat file database utama tanpa kesalahan. File data primer berisi kolom, bidang, baris, indeks, tabel, dan data yang ditambahkan oleh aplikasi. Ini juga berisi informasi penting dari database
File data sekunder ATAU file NDF
File data sekunder bersifat opsional. Tujuan dari file data primer dan file data sekunder (. ndf) adalah sama. File data sekunder berguna saat kami ingin menghapus data di beberapa drive server database. Misalnya, jika Anda ingin menyimpan tabel di drive X dan mengindeks di drive Y, Anda dapat menyimpan tabel di file data primer dan mengindeks di file data sekunder
File log ATAU file LDF
Ini menyimpan perubahan yang dibuat dalam database dengan menyisipkan, memperbarui, menghapus, dll. File LDF memiliki semua informasi yang dapat digunakan untuk memulihkan database
Cara menemukan lokasi file MDF
Kami dapat memperoleh lokasi file database dengan menanyakan sys. database_files dan sys. tampilan manajemen dinamis master_files. Perbedaannya adalah antara sys. master_files menyediakan lokasi fisik dari semua database dan sistem. database_files menyediakan informasi dari database tertentu
Untuk demonstrasi, saya telah memulihkan database demo "WideWorldImportors". Anda dapat mengunduhnya dari sini. Sekarang untuk mendapatkan lokasi file database dari sys. master_files DMV, jalankan kueri berikut
1
2
3
4
gunakan master
Pergilah
pilih db_name(database_id) as [Database Name],type_desc as [File Type], physical_name as [Database File Location] from sys.file_master
di mana database_id>=5 --kecualikan sistem
Berikut screenshot dari outputnya
Untuk mendapatkan informasi file database dari sys. database_files DMV, jalankan kueri berikut
1
2
3
gunakan WideWorldImporters
Pergilah
pilih nama_db()sebagai [Database Name],type_desc as [File Type], physical_name as [Database File Location] from sys.file_database
Untuk melihat lokasi file database menggunakan studio manajemen SQL Server, buka SSMS Hubungkan mesin database Perluas database klik kanan pada "WideWorldImportors" Pilih properti. Lihat gambar berikut
Di properti, pilih file. Di kolom "Path" dan "File Name" tunjukkan lokasi file database. Lihat gambar berikut
Kami dapat melampirkan file database SQL Server menggunakan metode berikut
- Menggunakan SQL Server Management Studio
- Menggunakan Skrip T-SQL
Lampirkan File MDF menggunakan SSMS
Untuk melampirkan database menggunakan SSMS, pertama buka SSMS connect to the database engine Klik kanan pada “databases” pilih “Attach. Lihat gambar berikut
Pada kotak dialog Lampirkan Database, klik Tambah (Layar 1). Pada kotak dialog cari basis data (Layar 2), cari file MDF basis data yang ingin Anda gunakan untuk membuat basis data. Secara default, kotak dialog "temukan file database" menggunakan lokasi file database default, tetapi Anda dapat menavigasi ke lokasi lain dari file database atau menyediakan lokasi di kotak teks "lokasi file data database". Pilih file database yang diinginkan dan klik OK. Lihat gambar berikut
Pada kotak dialog lampirkan file database, Anda dapat meninjau detail database di "Database untuk dilampirkan" dan detail file database di kotak "detail database AdventureWorks2017". Lihat gambar berikut
Klik OK untuk melampirkan database. Setelah database terpasang dengan sukses, Anda dapat melihat database di object explorer. Lihat gambar berikut
Lampirkan File MDF menggunakan T-SQL Query
Kami juga dapat melampirkan database menggunakan “CREATE DATABASE. DENGAN ATTACH” atau “exec sp_attach_db” perintah T-SQL. Sintaks “CREATE DATABASE. WITH ATTACH” perintahnya adalah sebagai berikut
1
2
3
4
5
6
GUNAKAN [master]
PERGILAH
buat database ON
(nama='LogicalName file Data', FileName='Data File Name'),
(nama='LogicalName file Log', FileName='Log File Name')
UNTUK LAMPIRKAN;
Misalnya, jika Anda ingin melampirkan database AdventureWorks2017, Anda harus menjalankan perintah berikut
1
2
3
4
5
6
7
GUNAKAN [master]
PERGILAH
BUAT DATABASE [AdventureWorks2017] ON
( NAMAFILE = N'C. \MSSQL\SQLData\AdventureWorks2017. mdf' ),
( NAMAFILE = N'C. \MSSQL\SQLLog\AdventureWorks2017_log. ldf' )
UNTUK LAMPIRKAN
PERGILAH
Sintaks dari perintah "exec sp_attach_db" adalah sebagai berikut
1
2
3
4
5
GUNAKAN [master]
PERGILAH
EXEC sp_attach_db @namadb = N'DatabaseName',
@namafile1 = '',
@namaberkas2 = '';
Kami dapat melampirkan database adventureworks2017 dengan menjalankan kueri berikut
1
2
3
4
5
GUNAKAN [master]
PERGILAH
EXEC sp_attach_db @namadb = N'AdventureWorks2017',
@namafile1 = 'C:\MSSQL\SQLData\AdventureWorks2017.mdf',
@namaberkas2 = 'C:\MSSQL\SQLLog\AdventureWorks2017_log.ldf';
Pemecahan masalah kesalahan saat melampirkan file MDF
Saat melampirkan database, Anda mungkin mengalami salah satu kesalahan berikut
Akses ditolak karena kurangnya izin
You might face an error “unable to open physical database file Operating system error 5: Access denied” This error occurs because of the lack of the permissions on the database file or log files. This can be fixed by any of the following methods:
- Jalankan studio manajemen SQL Server sebagai administrator dan lampirkan database
- Berikan akses kontrol penuh secara eksplisit ke file MDF dan file LDF dari database. Untuk melakukannya, Klik kanan file database Pilih tab keamanan pilih pengguna yang sesuai dan berikan kontrol penuh kepada pengguna
- Jika tidak ada solusi di atas yang berfungsi, salin file database ke lokasi file database default. Saat kami menyalin file-file ini ke lokasi file database default, pengguna akan mendapatkan izin yang diperlukan secara otomatis
Tidak dapat menurunkan versi
Saat melampirkan database, jika Anda melihat kesalahan "Database tidak dapat dibuka karena ini adalah versi XXX", pastikan Anda tidak melampirkan file database dari versi yang lebih tinggi ke versi yang lebih rendah. Misalnya, jika Anda mencoba melampirkan database SQL server 2014 ke SQL Server 2008, Anda akan melihat kesalahan berikut
Penurunan versi tidak pernah didukung oleh Microsoft, jadi Anda tidak memiliki opsi untuk memperbaiki masalah ini
Ringkasan
Pada artikel ini, saya telah menjelaskan berbagai jenis file database (file MDF, NDF dan LOG) dan berbagai cara untuk melampirkan database ke instance SQL Server melalui SSMS dan T-SQL. Selain itu, kami menjalankan langkah pemecahan masalah dasar untuk memperbaiki kesalahan yang terjadi saat melampirkan database