Bagikan melalui


Memindahkan database sistem

Berlaku untuk: SQL Server

Artikel ini menjelaskan cara memindahkan database sistem di SQL Server. Memindahkan database sistem mungkin berguna dalam situasi berikut:

  • Pemulihan kegagalan. Misalnya, database dalam mode tersangka atau telah dimatikan karena kegagalan perangkat keras.

  • Relokasi yang direncanakan.

  • Relokasi untuk pemeliharaan disk terjadwal.

Prosedur berikut 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 .

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

Penting

Jika Anda memindahkan database sistem dan kemudian membangun master kembali database, Anda harus memindahkan database sistem lagi karena operasi pembangunan ulang menginstal semua database sistem ke lokasi defaultnya.

Memindahkan database sistem

Untuk memindahkan data database sistem atau file log sebagai bagian dari relokasi terencana atau operasi pemeliharaan terjadwal, ikuti langkah-langkah ini. Ini termasuk modeldatabase sistem , msdb, dan tempdb .

Penting

Prosedur ini berlaku untuk semua database sistem kecuali master database dan Resource . Lihat nanti di artikel ini untuk langkah-langkah master memindahkan database. Database Resource tidak dapat dipindahkan.

  1. Rekam lokasi file database yang sudah ada yang ingin Anda pindahkan, dengan meninjau tampilan katalog sys.master_files .

  2. Verifikasi bahwa akun layanan untuk Mesin Database SQL Server memiliki izin penuh ke lokasi baru file. Untuk informasi selengkapnya, lihat Mengonfigurasi akun dan izin layanan Windows. Jika akun layanan Mesin Database tidak dapat mengontrol file di lokasi barunya, instans SQL Server tidak dimulai.

  3. Agar setiap file database dipindahkan, jalankan pernyataan berikut.

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

    Hingga layanan dimulai ulang, database terus menggunakan data dan file log di lokasi yang ada.

  4. Hentikan instans SQL Server untuk melakukan pemeliharaan. Untuk informasi selengkapnya, lihat Memulai, menghentikan, menjeda, melanjutkan, dan memulai ulang layanan SQL Server.

  5. Salin file atau file database ke lokasi baru. Langkah ini tidak diperlukan untuk tempdb database sistem; file-file tersebut dibuat di lokasi baru secara otomatis.

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

  7. Verifikasi perubahan file dengan menjalankan kueri berikut. Database sistem harus melaporkan lokasi file fisik baru.

    SELECT name,
           physical_name AS CurrentLocation,
           state_desc
    FROM sys.master_files
    WHERE database_id = DB_ID(N'<database_name>');
    
  8. Karena di Langkah 5 Anda menyalin file database alih-alih memindahkannya, sekarang Anda dapat menghapus file database yang tidak digunakan dengan aman dari lokasi sebelumnya.

Tindak lanjut: Setelah memindahkan msdb database sistem

msdb Jika database dipindahkan dan Email Database dikonfigurasi, selesaikan langkah-langkah tambahan berikut.

  1. Verifikasi bahwa Service Broker diaktifkan untuk msdb database dengan menjalankan kueri berikut.

    SELECT is_broker_enabled
    FROM sys.databases
    WHERE name = N'msdb';
    

    Jika Service Broker tidak diaktifkan untuk msdb, Service Broker harus diaktifkan kembali agar Email Database berfungsi. Untuk informasi selengkapnya, lihat MENGUBAH DATABASE ... ATUR ENABLE_BROKER.

    ALTER DATABASE msdb
        SET ENABLE_BROKER
        WITH ROLLBACK IMMEDIATE;
    

    Konfirmasikan bahwa nilai is_broker_enabled sekarang adalah 1.

  2. Verifikasi bahwa Email Database berfungsi dengan mengirim email pengujian.

Prosedur pemulihan kegagalan

Jika file harus dipindahkan karena kegagalan perangkat keras, ikuti langkah-langkah ini untuk memindahkan file ke lokasi baru. Prosedur ini berlaku untuk semua database sistem kecuali master database dan Resource . Contoh berikut menggunakan perintah baris perintah Windows dan Utilitas sqlcmd.

Penting

Jika database tidak dapat dimulai, jika dalam mode tersangka atau dalam status belum dipulihkan, hanya anggota peran tetap sysadmin yang dapat memindahkan file.

  1. Verifikasi bahwa akun layanan untuk Mesin Database SQL Server memiliki izin penuh ke lokasi baru file. Untuk informasi selengkapnya, lihat Mengonfigurasi akun dan izin layanan Windows. Jika akun layanan Mesin Database tidak dapat mengontrol file di lokasi barunya, instans SQL Server tidak dimulai.

  2. Hentikan instans SQL Server jika dimulai.

  3. Mulai instans SQL Server dalam mastermode pemulihan -only dengan memasukkan salah satu perintah berikut pada prompt perintah. Menggunakan parameter startup 3608 mencegah SQL Server memulai dan memulihkan database apa pun secara otomatis kecuali master database. Untuk informasi selengkapnya, lihat Parameter Startup dan TF3608.

    Parameter yang ditentukan dalam perintah ini peka huruf besar/kecil. Perintah gagal ketika parameter tidak ditentukan seperti yang ditunjukkan.

    Untuk instans default (MSSQLSERVER), jalankan perintah berikut:

    NET START MSSQLSERVER /f /T3608
    

    Untuk instans bernama, jalankan perintah berikut:

    NET START MSSQL$instancename /f /T3608
    

    Untuk informasi selengkapnya, lihat Memulai, menghentikan, menjeda, melanjutkan, dan memulai ulang layanan SQL Server.

  4. Segera setelah startup layanan dengan bendera pelacakan 3608 dan /f, mulai koneksi sqlcmd ke server, untuk mengklaim koneksi tunggal yang tersedia. Misalnya, saat menjalankan sqlcmd secara lokal di server yang sama dengan instans default (MSSQLSERVER), dan untuk terhubung dengan autentikasi integrasi Direktori Aktif, jalankan perintah berikut:

    sqlcmd
    

    Untuk menyambungkan ke instans bernama di server lokal, dengan autentikasi integrasi Direktori Aktif:

    sqlcmd -S localhost\instancename
    

    Untuk informasi selengkapnya tentang sintaks sqlcmd , lihat utilitas sqlcmd.

    Agar setiap file dipindahkan, gunakan perintah sqlcmd atau SQL Server Management Studio untuk menjalankan pernyataan berikut. Untuk informasi selengkapnya tentang menggunakan utilitas sqlcmd , lihat sqlcmd - gunakan utilitas. Setelah sesi sqlcmd terbuka, jalankan pernyataan berikut sekali agar setiap file dipindahkan:

    ALTER DATABASE database_name
        MODIFY FILE (NAME = logical_name, FILENAME = 'new_path\os_file_name');
    GO
    
  5. Keluar dari utilitas sqlcmd atau SQL Server Management Studio.

  6. Hentikan instans SQL Server. Misalnya, jalankan NET STOP MSSQLSERVER di prompt baris perintah.

  7. Salin file atau file ke lokasi baru.

  8. Mulai ulang instans SQL Server. Misalnya, jalankan NET START MSSQLSERVER di prompt baris perintah.

  9. 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>');
    
  10. Karena di Langkah 7 Anda menyalin file database alih-alih memindahkannya, sekarang Anda dapat menghapus file database yang tidak digunakan dengan aman dari lokasi sebelumnya.

master Memindahkan database

Untuk memindahkan master database, ikuti langkah-langkah ini.

  1. Verifikasi bahwa akun layanan untuk Mesin Database SQL Server memiliki izin penuh ke lokasi baru file. Untuk informasi selengkapnya, lihat Mengonfigurasi akun dan izin layanan Windows. Jika akun layanan Mesin Database tidak dapat mengontrol file di lokasi barunya, instans SQL Server tidak dimulai.

  2. Dari menu Mulai, temukan dan luncurkan Pengelola Konfigurasi SQL Server. Untuk informasi selengkapnya tentang lokasi yang diharapkan, lihat Pengelola Konfigurasi SQL Server.

  3. Di simpul Layanan SQL Server, klik kanan instans SQL Server (misalnya, SQL Server (MSSQLSERVER)) dan pilih Properti.

  4. Dalam kotak dialog Properti SQL Server (instance_name), pilih tab Parameter Startup.

  5. Dalam kotak Parameter yang ada, pilih -d parameter . Dalam kotak Tentukan parameter startup, ubah parameter ke jalur master baru file data . Pilih Perbarui untuk menyimpan perubahan.

  6. Dalam kotak Parameter yang ada, pilih -l parameter . Dalam kotak Tentukan parameter startup, ubah parameter ke jalur master baru file log . Pilih Perbarui untuk menyimpan perubahan.

    Nilai parameter untuk file data harus mengikuti -d parameter dan nilai untuk file log harus mengikuti -l parameter . Contoh berikut menunjukkan nilai parameter untuk lokasi master default file data.

    -dC:\Program Files\Microsoft SQL Server\MSSQL<version>.MSSQLSERVER\MSSQL\DATA\master.mdf
    -lC:\Program Files\Microsoft SQL Server\MSSQL<version>.MSSQLSERVER\MSSQL\DATA\mastlog.ldf
    

    Jika relokasi yang direncanakan master untuk file data adalah E:\SQLData, nilai parameter akan diubah sebagai berikut:

    -dE:\SQLData\master.mdf
    -lE:\SQLData\mastlog.ldf
    
  7. Pilih OK untuk menyimpan perubahan secara permanen dan menutup kotak dialog Properti SQL Server (instance_name).

  8. Hentikan instans SQL Server dengan mengklik kanan nama instans dan memilih Hentikan.

  9. master.mdf Salin file dan mastlog.ldf ke lokasi baru.

  10. Mulai ulang instans SQL Server.

  11. Verifikasi perubahan file untuk master database dengan menjalankan kueri berikut.

    SELECT name,
           physical_name AS CurrentLocation,
           state_desc
    FROM sys.master_files
    WHERE database_id = DB_ID('master');
    
  12. Pada titik ini SQL Server harus berjalan normal. Namun Microsoft merekomendasikan juga menyesuaikan entri registri di , di HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\instance_ID\Setupmana instance_ID seperti MSSQL13.MSSQLSERVER. Di sarang tersebut SQLDataRoot , ubah nilai ke jalur baru lokasi master baru file database. Kegagalan memperbarui registri dapat menyebabkan patching dan peningkatan gagal.

  13. Karena di Langkah 9 Anda menyalin file database alih-alih memindahkannya, sekarang Anda dapat menghapus file database yang tidak digunakan dengan aman dari lokasi sebelumnya.

Memindahkan database sumber daya

Lokasi Resource database adalah \<drive>:\Program Files\Microsoft SQL Server\MSSQL\<version>.<instance_name>\MSSQL\Binn\. Database tidak dapat dipindahkan.

Tindak lanjut: Setelah memindahkan semua database sistem

Jika Anda memindahkan semua database sistem ke drive atau volume baru, atau ke server lain dengan huruf drive yang berbeda, buat pembaruan berikut.

  • Ubah jalur log SQL Server Agent. Jika Anda tidak memperbarui jalur ini, SQL Server Agent gagal dimulai.

  • Ubah lokasi default database. Membuat database baru mungkin gagal jika huruf dan jalur drive yang ditentukan sebagai lokasi default tidak ada.

Mengubah jalur log SQL Server Agent

Jika Anda telah memindahkan semua database sistem ke volume baru atau telah bermigrasi ke server lain dengan huruf drive yang berbeda, dan jalur file SQLAGENT.OUT log kesalahan Agen SQL tidak ada lagi, buat pembaruan berikut.

  1. Dari SQL Server Management Studio, di Object Explorer, perluas SQL Server Agent.

  2. Klik kanan Log Kesalahan dan pilih Konfigurasikan.

  3. Dalam kotak dialog Konfigurasi Log Kesalahan Agen SQL Server, tentukan lokasi baru SQLAGENT. File OUT. Lokasi default adalah C:\Program Files\Microsoft SQL Server\MSSQL\<version>.<instance_name>\MSSQL\Log\.

Mengubah lokasi default database

  1. Dari SQL Server Management Studio, di Object Explorer, sambungkan ke instans SQL Server yang diinginkan. Klik kanan instans dan pilih Properti.

  2. Dalam kotak dialog Properti Server, pilih Pengaturan Database.

  3. Di bawah Lokasi Default Database, telusuri ke lokasi baru untuk file data dan log.

  4. Hentikan dan mulai layanan SQL Server untuk menyelesaikan perubahan.

Contoh

J. tempdb Memindahkan database

Contoh berikut memindahkan tempdb data dan file log ke lokasi baru sebagai bagian dari relokasi yang direncanakan.

Tip

Ambil kesempatan ini untuk meninjau file Anda tempdb untuk ukuran dan penempatan yang optimal. Untuk informasi selengkapnya, lihat Mengoptimalkan performa tempdb di SQL Server.

Karena tempdb dibuat ulang setiap kali instans SQL Server dimulai, Anda tidak perlu memindahkan data dan file log secara fisik. File dibuat di lokasi baru saat layanan dimulai ulang di langkah 4. Hingga layanan dimulai ulang, tempdb terus gunakan data dan file log di lokasi yang ada.

  1. Tentukan nama tempdb file logis database dan lokasinya saat ini pada disk.

    SELECT name,
           physical_name AS CurrentLocation
    FROM sys.master_files
    WHERE database_id = DB_ID(N'tempdb');
    GO
    
  2. Verifikasi bahwa akun layanan untuk Mesin Database SQL Server memiliki izin penuh ke lokasi baru file. Untuk informasi selengkapnya, lihat Mengonfigurasi akun dan izin layanan Windows. Jika akun layanan Mesin Database tidak dapat mengontrol file di lokasi barunya, instans SQL Server tidak dimulai.

  3. Ubah lokasi setiap file dengan menggunakan ALTER DATABASE.

    USE master;
    GO
    
    ALTER DATABASE tempdb
        MODIFY FILE (NAME = tempdev, FILENAME = 'E:\SQLData\tempdb.mdf');
    GO
    
    ALTER DATABASE tempdb
        MODIFY FILE (NAME = templog, FILENAME = 'F:\SQLLog\templog.ldf');
    GO
    

    Hingga layanan dimulai ulang, tempdb terus gunakan data dan file log di lokasi yang ada.

  4. Hentikan dan mulai ulang instans SQL Server.

  5. Verifikasi perubahan file.

    SELECT name,
           physical_name AS CurrentLocation,
           state_desc
    FROM sys.master_files
    WHERE database_id = DB_ID(N'tempdb');
    
  6. Hapus file yang tidak digunakan tempdb dari lokasi aslinya.