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 memindahkan database sistem di SQL Server. Memindahkan database sistem mungkin berguna dalam situasi berikut:
Pemulihan dari kegagalan. Misalnya, database dalam mode tersangka atau telah dimatikan karena kegagalan perangkat keras.
Relokasi yang direncanakan.
Relokasi untuk pemeliharaan disk yang 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 model, msdb, dan tempdb database sistem.
Penting
Prosedur ini berlaku untuk semua database sistem kecuali master database dan Resource . Lihat nanti di artikel ini untuk langkah-langkah memindahkan master database. Database Resource tidak dapat dipindahkan.
Rekam lokasi file database yang sudah ada yang ingin Anda pindahkan, dengan meninjau tampilan katalog sys.master_files .
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.
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.
Hentikan instans SQL Server untuk melakukan pemeliharaan. Untuk informasi selengkapnya, lihat Memulai, menghentikan, menjeda, melanjutkan, dan memulai ulang layanan SQL Server.
Salin file-file database ke lokasi baru. Langkah ini tidak diperlukan untuk
tempdbdatabase sistem; file-file tersebut dibuat di lokasi baru secara otomatis.Mulai ulang instans SQL Server atau server. Untuk informasi selengkapnya, lihat Memulai, menghentikan, menjeda, melanjutkan, dan memulai ulang layanan SQL Server.
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>');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
Jika database dipindahkan dan Database Email dikonfigurasi, selesaikan langkah-langkah tambahan berikut.
Verifikasi bahwa Service Broker diaktifkan untuk
msdbdatabase 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 ALTER DATABASE ... SET ENABLE_BROKER.ALTER DATABASE msdb SET ENABLE_BROKER WITH ROLLBACK IMMEDIATE;Konfirmasikan bahwa nilai
is_broker_enabledsekarang adalah 1.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 dugaan atau dalam keadaan belum dipulihkan, hanya anggota dari peran tetap sysadmin yang dapat memindahkan file.
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.
Hentikan instans SQL Server jika sudah berjalan.
Mulai instans SQL Server dalam mode pemulihan
master-only dengan memasukkan salah satu perintah berikut pada baris perintah. Menggunakan parameter startup 3608 mencegah SQL Server memulai dan memulihkan database apa pun secara otomatis kecualimasterdatabase. Untuk informasi selengkapnya, lihat Parameter Startup dan TF3608.Parameter yang ditentukan dalam perintah ini peka terhadap huruf besar/kecil. Perintah gagal ketika parameter tidak ditentukan seperti yang ditunjukkan.
Untuk instans default (MSSQLSERVER), jalankan perintah berikut:
NET START MSSQLSERVER /f /T3608Untuk instans bernama, jalankan perintah berikut:
NET START MSSQL$instancename /f /T3608Untuk informasi selengkapnya, lihat Memulai, menghentikan, menjeda, melanjutkan, dan memulai ulang layanan SQL Server.
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:sqlcmdUntuk menyambungkan ke instans bernama di server lokal, dengan autentikasi integrasi Active Directory:
sqlcmd -S localhost\instancenameUntuk 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'); GOKeluar dari utilitas sqlcmd atau SQL Server Management Studio.
Hentikan instans dari SQL Server. Misalnya, jalankan
NET STOP MSSQLSERVERdi prompt baris perintah.Salin file atau file ke lokasi baru.
Mulai ulang instans SQL Server. Misalnya, jalankan
NET START MSSQLSERVERdi prompt baris perintah.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>');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.
Memindahkan database master
Untuk memindahkan master database, ikuti langkah-langkah ini.
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.
Dari menu Mulai, temukan dan luncurkan Pengelola Konfigurasi SQL Server. Untuk informasi selengkapnya tentang lokasi yang diharapkan, lihat Pengelola Konfigurasi SQL Server.
Di simpul Layanan SQL Server, klik kanan instans SQL Server (misalnya, SQL Server (MSSQLSERVER)) dan pilih Properti.
Dalam kotak dialog Properti SQL Server (instance_name), pilih tab Parameter Startup.
Dalam kotak Parameter yang ada, pilih parameter
-d. Dalam kotak Tentukan parameter startup, ubah parameter ke jalur baru dari filemasterdata. Pilih Perbarui untuk menyimpan perubahan.Dalam kotak Parameter yang sudah ada, pilih
-lparameter tersebut. Dalam kotak Tentukan parameter mulai, ubah parameter ke jalur barumasterfile log yang baru. Pilih Perbarui untuk menyimpan perubahan.Nilai parameter untuk file data harus mengikuti
-dparameter dan nilai untuk file log harus mengikuti-lparameter . Contoh berikut menunjukkan nilai parameter untuk lokasi bawaan file datamaster.-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.ldfJika relokasi yang direncanakan untuk file data
masteradalahE:\SQLData, nilai parameter akan diubah sebagai berikut:-dE:\SQLData\master.mdf -lE:\SQLData\mastlog.ldfPilih OK untuk menyimpan perubahan secara permanen dan menutup kotak dialog Properti SQL Server (instance_name).
Hentikan instans SQL Server dengan mengklik kanan nama instans dan memilih Hentikan.
master.mdfSalin file danmastlog.ldfke lokasi baru.Mulai ulang instans SQL Server.
Verifikasi perubahan file untuk
masterdatabase dengan menjalankan kueri berikut.SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID('master');Pada titik ini SQL Server harus berjalan normal. Namun, Microsoft juga merekomendasikan untuk menyesuaikan entri registri di
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\instance_ID\Setup, di mana instance_ID adalah sepertiMSSQL13.MSSQLSERVER. Dalam registry tersebut, ubah nilaiSQLDataRootke jalur baru lokasi baru file databasemaster. Kegagalan memperbarui registri dapat menyebabkan patching dan peningkatan gagal.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.
Dari SQL Server Management Studio, di Object Explorer, perluas SQL Server Agent.
Klik kanan Log Kesalahan dan pilih Konfigurasi.
Dalam kotak dialog Konfigurasi Log Kesalahan Agen SQL Server, tentukan lokasi baru file SQLAGENT.OUT. Lokasi default adalah
C:\Program Files\Microsoft SQL Server\MSSQL\<version>.<instance_name>\MSSQL\Log\.
Mengubah lokasi default database
Dari SQL Server Management Studio, di Object Explorer, sambungkan ke instans SQL Server yang diinginkan. Klik kanan instans dan pilih Properti.
Dalam kotak dialog Properti Server, pilih Pengaturan Database.
Di bawah Lokasi Default Database, telusuri ke lokasi baru untuk kedua file data dan log.
Hentikan dan mulai layanan SQL Server untuk menyelesaikan perubahan.
Contoh
A. Pindahkan tempdb database
Contoh berikut memindahkan tempdb data dan file log ke lokasi baru sebagai bagian dari relokasi yang direncanakan.
Kiat
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.
Tentukan nama
tempdbfile 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'); GOVerifikasi 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.
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'); GOHingga layanan dimulai ulang,
tempdbterus gunakan data dan file log di lokasi yang ada.Hentikan dan mulai ulang instans SQL Server.
Verifikasi perubahan file.
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'tempdb');Hapus file yang tidak digunakan
tempdbdari lokasi aslinya.