Bagikan melalui


Memindahkan database pengguna

Berlaku untuk:SQL Server

Di SQL Server, Anda dapat memindahkan file data, log, dan katalog teks lengkap database pengguna ke lokasi baru dengan menentukan lokasi file baru dalam FILENAME klausa pernyataan ALTER DATABASE . Metode ini berlaku untuk memindahkan file database dalam instans SQL Server yang sama. Untuk memindahkan database ke instans SQL Server lain atau ke server lain, gunakan operasi pencadangan dan pemulihan atau lepaskan dan lampirkan.

Catatan

Artikel ini membahas pemindahan file database pengguna. Untuk memindahkan file database sistem, lihat Memindahkan database sistem.

Pertimbangan

Saat Anda memindahkan database ke instans server lain, untuk memberikan pengalaman yang konsisten kepada pengguna dan aplikasi, Anda mungkin harus membuat ulang beberapa atau semua metadata untuk database. Untuk informasi selengkapnya, lihat Mengelola Metadata Saat Membuat Database Tersedia di Server Lain.

Beberapa fitur Mesin Database SQL Server mengubah cara Mesin Database menyimpan informasi dalam file database. Fitur-fitur ini dibatasi untuk edisi SQL Server tertentu. Database yang berisi fitur-fitur ini tidak dapat dipindahkan ke edisi SQL Server yang tidak mendukungnya. sys.dm_db_persisted_sku_features Gunakan tampilan manajemen dinamis untuk mencantumkan semua fitur khusus edisi yang diaktifkan dalam database saat ini.

Prosedur dalam artikel ini memerlukan nama logis file database. Untuk mendapatkan nama, kueri kolom nama dalam tampilan katalog sys.master_files .

Katalog teks lengkap diintegrasikan ke dalam database daripada disimpan dalam sistem file. Katalog teks lengkap berpindah secara otomatis saat Anda memindahkan database.

Catatan

Pastikan akun layanan untuk mengonfigurasi akun layanan dan izin Windows memiliki izin ke lokasi file baru dalam sistem file. Untuk informasi selengkapnya, lihat Mengonfigurasi izin sistem file untuk akses Mesin Database.

Prosedur relokasi terencana

Untuk memindahkan data atau file log sebagai bagian dari relokasi yang direncanakan, ikuti langkah-langkah berikut:

  1. Agar setiap file dipindahkan, jalankan pernyataan berikut.

    ALTER DATABASE database_name
        MODIFY FILE (NAME = logical_name, FILENAME = 'new_path\os_file_name');
    
  2. Jalankan pernyataan berikut untuk membuat database offline.

    ALTER DATABASE database_name
        SET OFFLINE;
    

    Tindakan ini memerlukan akses eksklusif ke database. Jika koneksi lain terbuka ke database, ALTER DATABASE pernyataan diblokir hingga semua koneksi ditutup. Untuk mengambil alih perilaku ini, gunakan WITH <termination> klausul . Misalnya, untuk secara otomatis mengembalikan dan memutuskan semua koneksi lain ke database, gunakan:

    ALTER DATABASE database_name
         SET OFFLINE
         WITH ROLLBACK IMMEDIATE;
    
  3. Pindahkan file ke lokasi baru.

  4. Jalankan pernyataan berikut.

    ALTER DATABASE database_name
        SET ONLINE;
    
  5. Verifikasi perubahan file dengan menjalankan kueri berikut.

    SELECT name,
           physical_name AS CurrentLocation,
           state_desc
    FROM sys.master_files
    WHERE database_id = DB_ID(N'<database_name>');
    

Relokasi untuk pemeliharaan disk yang terjadwal

Untuk merelokasi file sebagai bagian dari proses pemeliharaan disk terjadwal, ikuti langkah-langkah berikut:

  1. Agar setiap file dipindahkan, jalankan pernyataan berikut.

    ALTER DATABASE database_name
        MODIFY FILE (NAME = logical_name, FILENAME = 'new_path\os_file_name');
    
  2. Untuk melakukan pemeliharaan, hentikan instans SQL Server atau matikan sistem. Untuk informasi selengkapnya, lihat Memulai, menghentikan, menjeda, melanjutkan, dan memulai ulang layanan SQL Server.

  3. Pindahkan file ke lokasi baru.

  4. Mulai ulang instans SQL Server atau server. Untuk informasi selengkapnya, lihat Memulai, menghentikan, menjeda, melanjutkan, dan memulai ulang layanan SQL Server

  5. Verifikasi perubahan file dengan menjalankan kueri berikut.

    SELECT name,
           physical_name AS CurrentLocation,
           state_desc
    FROM sys.master_files
    WHERE database_id = DB_ID(N'<database_name>');
    

Prosedur pemulihan kegagalan

Jika file harus dipindahkan karena kegagalan perangkat keras, gunakan langkah-langkah berikut untuk memindahkan file ke lokasi baru.

Penting

Jika database tidak dapat dimulai, yaitu berada dalam mode terduga atau dalam status yang belum dipulihkan, hanya anggota dari peran tetap sysadmin yang dapat memindahkan file.

  1. Hentikan instans SQL Server jika sudah berjalan.

  2. Mulai instans SQL Server dalam master hanya mode pemulihan dengan memasukkan salah satu perintah berikut pada prompt perintah.

  3. Agar setiap file dipindahkan, gunakan perintah sqlcmd atau SQL Server Management Studio untuk menjalankan pernyataan berikut.

    ALTER DATABASE database_name
        MODIFY FILE (NAME = logical_name, FILENAME = 'new_path\os_file_name');
    

    Untuk informasi selengkapnya tentang cara menggunakan utilitas sqlcmd , lihat sqlcmd - gunakan utilitas.

  4. Keluar dari utilitas sqlcmd atau SQL Server Management Studio.

  5. Hentikan instans SQL Server.

  6. Pindahkan file ke lokasi baru.

  7. Mulai instans SQL Server. Misalnya, jalankan: NET START MSSQLSERVER.

  8. Verifikasi perubahan file dengan menjalankan kueri berikut.

    SELECT name,
           physical_name AS CurrentLocation,
           state_desc
    FROM sys.master_files
    WHERE database_id = DB_ID(N'<database_name>');
    

Contoh

Contoh berikut memindahkan AdventureWorks2025 file log ke lokasi baru sebagai bagian dari relokasi yang direncanakan.

  1. Pastikan Anda berada dalam konteks basis data master.

    USE master;
    GO
    
  2. Mengembalikan nama file logis.

    SELECT name,
           physical_name AS CurrentLocation,
           state_desc
    FROM sys.master_files
    WHERE database_id = DB_ID(N'AdventureWorks2022')
          AND type_desc = N'LOG';
    GO
    
  3. Setel database menjadi offline.

    ALTER DATABASE AdventureWorks2022
        SET OFFLINE;
    GO
    
  4. Pindahkan file secara fisik ke lokasi baru. Dalam pernyataan berikut, ubah jalur yang ditentukan di FILENAME ke lokasi baru file di server Anda.

    ALTER DATABASE AdventureWorks2022
        MODIFY FILE (NAME = AdventureWorks2022_Log, FILENAME = 'C:\NewLoc\AdventureWorks2022_Log.ldf');
    GO
    
    ALTER DATABASE AdventureWorks2022
        SET ONLINE;
    GO
    
  5. Verifikasi lokasi baru.

    SELECT name,
           physical_name AS CurrentLocation,
           state_desc
    FROM sys.master_files
    WHERE database_id = DB_ID(N'AdventureWorks2022')
          AND type_desc = N'LOG';