\Melampirkan database

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 dan pembatasan, lihat Pencopotan dan Lampirkan 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 ditiru Izin file diberikan kepada
Lepaskan Ya Hanya akun yang melakukan operasi. 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 DATABASEMemerlukan 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.

  1. Di SQL Server Management Studio Object Explorer, sambungkan ke instans Mesin Database SQL Server lalu perluas instans.

  2. Perluas Database, dan pilih nama database pengguna yang ingin Anda copot.

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

  1. Di SQL Server Management Studio Object Explorer, sambungkan ke instans SQL Server Database Engine, lalu pilih untuk memperluas tampilan instans tersebut di SQL Server Database Engine.

  2. Klik kanan Database dan pilih Lampirkan.

  3. 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 kemungkinan pemilik database tempat Anda dapat memilih pemilik yang berbeda secara opsional.

    Status
    Menampilkan status database sesuai dengan tabel berikut ini:

    Icon 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 dan kanan Dalam proses Operasi lampirkan telah dimulai tetapi belum selesai.
    Tanda centang hijau Berhasil Objek berhasil dilampirkan.
    Lingkaran merah berisi salib putih Kesalahan Operasi lampirkan mengalami kesalahan dan tidak berhasil diselesaikan.
    Lingkaran yang berisi dua kuadran hitam (di kiri dan kanan) dan dua kuadran putih (di atas dan bawah) Dihentikan Operasi lampirkan tidak berhasil diselesaikan karena Anda menghentikan operasi.
    Lingkaran yang berisi panah melengkung menunjuk berlawanan arah jarang Digulung Balik Operasi lampirkan berhasil tetapi telah digulung balik karena kesalahan selama lampiran 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 berlaku secara otomatis diisi di bidang masing-masing Database untuk melampirkan kisi.

    Hapus
    Menghapus file terpilih dari Database untuk melampirkan kisi.

    Detail database "<database_name">
    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 jalur file di kisi detail database untuk menunjuk ke lokasi yang benar atau menghapus file log dari kisi. Jika file data .ndf tidak ditemukan, Anda perlu memperbarui jalurnya di kisi 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).

  1. Di SQL Server Management Studio, pilih Kueri Baru untuk membuka Editor Kueri.

  2. 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 database

  1. Sambungkan ke Mesin Database.

  2. Dari bilah Standar, pilih Kueri Baru.

  3. Gunakan pernyataan CREATE DATABASE dengan FOR ATTACH klausa .

    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 baik mengimpor, mengatur ulang, atau membangunnya kembali, tergantung pada pengaturan properti server Opsi Peningkatan Teks Penuh. 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.

Baca juga

Langkah berikutnya