Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server
Artikel ini menjelaskan cara melampirkan database di SQL Server dengan SQL Server Management Studio atau Transact-SQL. Anda dapat menggunakan fitur ini untuk menyalin, memindahkan, atau meningkatkan database SQL Server.
Pembatasan dan batasan
Untuk daftar batasan, lihat Lepas dan Pasang Database (SQL Server).
Prasyarat
Tinjau semua prasyarat berikut sebelum melanjutkan:
Dalam kasus di mana Anda memindahkan database dari satu instans ke instans lain, database harus terlebih dahulu dilepas dari instans SQL yang ada. Jika Anda mencoba melampirkan database yang belum dilepas akan mengembalikan kesalahan. Untuk informasi selengkapnya, lihat Mencopot Database.
Saat Anda melampirkan database, semua file data untuk database harus tersedia. Seringkali, file-file ini memiliki ekstensi .mdf atau .ndf (untuk file data) dan .ldf (untuk file log transaksi). Selain itu, grup file apa pun untuk data FILESTREAM harus ada dan tersedia. Untuk informasi selengkapnya untuk melampirkan database yang diaktifkan FILESTREAM, lihat Memindahkan Database yang Diaktifkan FILESTREAM.
Jika ada file data yang memiliki jalur yang berbeda dari kapan database pertama kali dibuat atau terakhir dilampirkan, Anda harus menentukan jalur file saat ini.
Akun layanan Mesin Database harus memiliki izin untuk membaca file di lokasi baru mereka.
Jika file MDF dan LDF berada di direktori yang berbeda dan salah satu jalur menyertakan
\\?\GlobalRoot
, ketika Anda melampirkan database, operasi akan gagal.
Apakah Lampirkan pilihan terbaik?
Kami menyarankan agar Anda memindahkan database dalam instans dengan prosedur relokasi yang direncanakan ALTER DATABASE
alih-alih melepaskan dan melampirkan, saat memindahkan file database dalam instans yang sama. Untuk informasi selengkapnya, lihat Memindahkan Database Pengguna.
Tidak disarankan untuk menggunakan lepaskan dan lampirkan untuk Pencadangan dan Pemulihan. Tidak ada cadangan log transaksi atau pemulihan point-in-time yang tersedia saat melepaskan file yang akan dicadangkan secara eksternal dari SQL Server.
Keamanan
Izin akses file diatur selama banyak operasi database, termasuk saat database dilepas dan dilampirkan. Ketika database dilepas atau dilampirkan, Mesin Database mencoba meniru akun Windows dari koneksi yang melakukan operasi untuk menjamin bahwa akun memiliki izin untuk mengakses database dan file log. Untuk akun keamanan campuran yang menggunakan login SQL Server, peniruan mungkin gagal.
Tabel berikut ini memperlihatkan izin yang diatur pada database dan file log setelah operasi lampirkan atau lepaskan selesai, dan apakah akun penghubung dapat ditiru oleh Mesin Database.
Operasi | Menyambungkan akun dapat disamarkan | Izin file diberikan kepada |
---|---|---|
Lepaskan | Ya | Hanya akun yang melakukan tindakan. Akun tambahan dapat ditambahkan oleh administrator sistem operasi, jika diperlukan setelah database dilepaskan. |
Lepaskan | Tidak | Akun layanan SQL Server (MSSQLSERVER) dan anggota grup Administrator Windows lokal. |
Lampirkan | Ya | Akun layanan SQL Server (MSSQLSERVER) dan anggota grup Administrator Windows lokal. |
Lampirkan | Tidak | Akun layanan SQL Server (MSSQLSERVER). |
Untuk informasi selengkapnya tentang izin sistem file yang diberikan ke SID per layanan untuk layanan SQL Server, lihat Mengonfigurasi Izin Sistem File untuk Akses Mesin Database.
Perhatian
Kami menyarankan agar Anda tidak melampirkan atau memulihkan database dari sumber yang tidak diketahui atau tidak tepercaya. Database tersebut dapat berisi kode berbahaya yang mungkin menjalankan kode Transact-SQL yang tidak diinginkan atau menyebabkan kesalahan dengan memodifikasi skema atau struktur database fisik. Sebelum Anda menggunakan database dari sumber yang tidak diketahui atau tidak tepercaya, jalankan DBCC CHECKDB pada database di server nonproduksi dan juga periksa kode, seperti prosedur tersimpan atau kode lain yang ditentukan pengguna, dalam database. Untuk informasi selengkapnya tentang melampirkan database dan informasi tentang perubahan yang dibuat pada metadata saat Anda melampirkan database, lihat Pencopotan dan Lampirkan Database (SQL Server).
Izin
CREATE DATABASE
Memerlukan izin , CREATE ANY DATABASE
, atau ALTER ANY DATABASE
.
Menggunakan SQL Server Management Studio (SSMS)
Sebelum memindahkan database
Jika Anda memindahkan database, sebelum melepaskannya dari instans SQL Server yang ada, gunakan halaman Properti database untuk meninjau file yang terkait dengan database dan lokasinya saat ini.
Di SQL Server Management Studio Object Explorer, sambungkan ke instans Mesin Database SQL Server lalu perluas instans.
Perluas Database, dan pilih nama database pengguna yang ingin Anda copot.
Klik kanan nama database, pilih Properti. Pilih halaman File dan tinjau entri dalam file Database: tabel.
Pastikan untuk memperhitungkan semua file yang terkait dengan database sebelum Anda melepaskan, memindahkan, dan melampirkan. Kemudian, lanjutkan dengan melepaskan, menyalin file, dan melampirkan langkah-langkah database di bagian berikutnya. Untuk informasi selengkapnya, lihat Mencopot Database.
Melampirkan database
Di SQL Server Management Studio Object Explorer, sambungkan ke instans SQL Server Database Engine, kemudian pilih untuk memperluas tampilan instans tersebut di SSMS.
Klik kanan Database dan pilih Lampirkan.
Dalam kotak dialog Lampirkan Database , untuk menentukan database yang akan dilampirkan, pilih Tambahkan. Dalam kotak dialog Temukan File Database, pilih lokasi tempat database berada dan perluas pohon direktori untuk menemukan dan memilih file .mdf database; misalnya:
C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\AdventureWorks2022_Data.mdf
Penting
Mencoba memilih database yang sudah dilampirkan menghasilkan kesalahan.
Database yang akan dilampirkan
Menampilkan informasi tentang database terpilih.<tidak ada header kolom>
Menampilkan ikon yang menunjukkan status operasi lampirkan. Ikon yang mungkin dijelaskan dalam deskripsi Status .Lokasi File MDF
Menampilkan jalur dan nama file dari file MDF terpilih.Nama Database
Menampilkan nama database.Lampirkan Sebagai
Secara opsional, menentukan nama yang berbeda untuk database yang akan dilampirkan sebagai.Pemilik
Menyediakan daftar drop-down calon pemilik database yang memungkinkan Anda untuk memilih pemilik lain jika diinginkan.Keadaan
Menampilkan status database sesuai dengan tabel berikut ini:Ikon Teks status Deskripsi (Tidak ada ikon) (Tidak ada teks) Operasi lampirkan belum dimulai atau mungkin tertunda untuk objek ini. Ini adalah default ketika dialog dibuka. Segitiga hijau yang mengarah ke kanan Dalam proses Operasi lampirkan telah dimulai tetapi belum selesai. Tanda centang hijau Berhasil Objek berhasil dilampirkan. Lingkaran merah berisi salib putih Kesalahan Operasi lampiran mengalami kesalahan dan tidak berhasil diselesaikan dengan sukses. Lingkaran yang berisi dua kuadran hitam (di kiri dan kanan) dan dua kuadran putih (di atas dan bawah) Dihentikan Operasi melampirkan tidak berhasil karena Anda menghentikannya. Lingkaran yang berisi panah melengkung menunjuk berlawanan arah jarum jam Digulung Balik Operasi lampirkan dilakukan dengan sukses tetapi telah dibatalkan karena kesalahan selama pemasangan objek lain. Pesan
Menampilkan pesan kosong atau hyperlink "File tidak ditemukan".Tambahkan
Temukan file database utama yang diperlukan. Saat Anda memilih file .mdf, informasi yang sesuai secara otomatis diisi ke dalam bidang pada kisi Database yang akan dilampirkan.Hapus
Menghapus file terpilih dari Database untuk melampirkan kisi."<database_name>" detail dari database
Menampilkan nama berkas yang akan dilampirkan. Untuk memverifikasi atau mengubah nama jalur file, pilih tombol Telusuri (...).Catatan
Jika file tidak ada, kolom Pesan menampilkan "Tidak ditemukan." Jika file log tidak ditemukan, file tersebut ada di direktori lain atau telah dihapus. Anda perlu memperbarui path file di tabel detail database agar menunjuk ke lokasi yang benar atau menghapus file log dari tabel. Jika file data .ndf tidak ditemukan, Anda perlu memperbarui path-nya di grid untuk menunjuk ke lokasi yang benar.
Nama File Asli
Menampilkan nama file terlampir milik database.Jenis File
Menunjukkan jenis file, Data, atau Log.Jalur File Saat Ini
Menampilkan jalur ke file database terpilih. Jalur dapat diedit secara manual.Pesan
Menampilkan pesan kosong atau hyperlink "File tidak ditemukan".
Menggunakan Transact-SQL
Sebelum memindahkan database
Jika Anda memindahkan database, sebelum dilepas dari instans SQL Server yang ada, gunakan sys.database_files
tampilan katalog sistem untuk meninjau file yang terkait dengan database dan lokasinya saat ini. Untuk informasi selengkapnya, lihat sys.database_files (Transact-SQL).
Di SQL Server Management Studio, pilih Kueri Baru untuk membuka Editor Kueri.
Salin skrip Transact-SQL berikut ke Editor Kueri, lalu pilih Jalankan. Skrip ini menampilkan lokasi file database fisik. Pastikan untuk memperhitungkan semua file saat Anda memindahkan database melalui lepaskan/lampirkan.
USE [database_name] GO SELECT type_desc, name, physical_name from sys.database_files;
Pastikan untuk memperhitungkan semua file yang terkait dengan database sebelum Anda melepaskan, memindahkan, dan melampirkan. Kemudian, lanjutkan dengan melepaskan, menyalin file, dan melampirkan langkah-langkah database di bagian berikutnya. Untuk informasi selengkapnya, lihat Mencopot Database.
Untuk melampirkan basis data
Sambungkan ke Mesin Database.
Dari bilah Standar, pilih Kueri Baru.
Gunakan pernyataan CREATE DATABASE dengan klausa
FOR ATTACH
.Salin dan tempel contoh berikut ke dalam jendela kueri dan pilih Jalankan. Contoh ini melampirkan semua file database AdventureWorks2022 dan mengganti nama database menjadi
MyAdventureWorks
.CREATE DATABASE MyAdventureWorks ON (FILENAME = 'C:\MySQLServer\AdventureWorks_Data.mdf'), (FILENAME = 'C:\MySQLServer\AdventureWorks_Log.ldf') FOR ATTACH;
Database Anda mungkin memiliki file data tambahan (umumnya, .mdf atau .ndf), dan memerlukan file tambahan untuk disertakan
CREATE DATABASE ... FOR ATTACH
dalam pernyataan. Selain itu, grup file apa pun untuk data FILESTREAM juga harus disertakan dalam pernyataan. Untuk informasi selengkapnya tentang melampirkan database yang diaktifkan FILESTREAM, lihat Memindahkan Database yang Diaktifkan FILESTREAM.Catatan
Atau, Anda dapat menggunakan prosedur tersimpan sp_attach_db atau sp_attach_single_file_db . Namun, prosedur ini akan dihapus dalam versi Microsoft SQL Server di masa mendatang. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini. Kami sarankan Anda menggunakan
CREATE DATABASE ... FOR ATTACH
sebagai gantinya.
Setelah memutakhirkan database SQL Server
Tingkat kompatibilitas database
Setelah Anda memutakhirkan database dengan menggunakan metode lampirkan, database akan tersedia. Database akan secara otomatis ditingkatkan ke tingkat versi internal instans baru. Jika database memiliki indeks teks lengkap, proses peningkatan akan mengimpor, mengatur ulang, atau membangunnya kembali, tergantung pada pengaturan opsi peningkatan teks penuh di properti server. Jika opsi peningkatan diatur ke Impor atau Bangun Ulang, indeks teks lengkap tidak tersedia selama peningkatan. Bergantung pada jumlah data yang diindeks, impor dapat memakan waktu beberapa jam, dan pembangunan ulang dapat memakan waktu hingga 10 kali lebih lama. Perhatikan juga bahwa ketika opsi peningkatan diatur ke Impor, jika katalog teks lengkap tidak tersedia, indeks teks lengkap terkait dibangun kembali.
Setelah peningkatan, tingkat kompatibilitas database tetap pada tingkat kompatibilitas sebelum peningkatan, kecuali tingkat kompatibilitas sebelumnya tidak didukung pada versi baru. Dalam hal ini, tingkat kompatibilitas database yang ditingkatkan diatur ke tingkat kompatibilitas terendah yang didukung. Misalnya, jika Anda melampirkan database yang merupakan tingkat kompatibilitas 90 sebelum melampirkannya ke instans SQL Server 2019 (15.x), setelah peningkatan tingkat kompatibilitas diatur ke 100, yang merupakan tingkat kompatibilitas terendah yang didukung di SQL Server 2019 (15.x). Untuk informasi selengkapnya, lihat MENGUBAH Tingkat Kompatibilitas DATABASE (Transact-SQL).
Pengambilan Data Perubahan (CDC)
Jika Anda melampirkan database dari instans SQL Server 2014 (12.x) atau yang lebih lama, yang mengaktifkan Change Data Capture (CDC), Anda harus menjalankan perintah berikut untuk meningkatkan metadata Change Data Capture (CDC):
USE <database name>
EXEC sys.sp_cdc_vupgrade
Untuk informasi selengkapnya, lihat Kesalahan saat Anda melampirkan database berkemampuan CDC ke instans SQL Server 2016 atau SQL Server 2017 di Windows.
Lihat juga
- Pencopotan dan Lampirkan Database (SQL Server)
- Melepas Database
- BUAT DATABASE (SQL Server Transact-SQL)
- Mengonfigurasi Izin Sistem File untuk Akses Mesin Database