Bagikan melalui


Membangun kembali database sistem

Berlaku untuk:SQL Server

Database sistem harus dibangun kembali untuk memperbaiki masalah kerusakan dalam database sistem master, model, msdb, atau sumber daya , atau untuk mengubah kolase tingkat server default. Artikel ini menyediakan instruksi langkah demi langkah untuk membangun kembali database sistem di SQL Server.

Artikel ini tidak terkait dengan membangun ulang indeks.

Batasan

masterKetika database sistem , model, msdb, dan tempdb dibangun kembali, database dihilangkan dan dibuat ulang di lokasi aslinya. Jika kolasasi baru ditentukan dalam pernyataan pembangunan ulang, database sistem dibuat menggunakan pengaturan kolaterasi tersebut. Setiap modifikasi pengguna pada database ini hilang. Misalnya, Anda mungkin memiliki objek yang ditentukan pengguna dalam master database, pekerjaan terjadwal di msdb, atau perubahan pada pengaturan database default dalam model database.

Prasyarat

Lakukan tugas berikut sebelum Anda membangun ulang database sistem untuk memastikan bahwa Anda dapat memulihkan database sistem ke pengaturannya saat ini.

  1. Rekam semua nilai konfigurasi di seluruh server.

    SELECT * FROM sys.configurations;
    
  2. Rekam semua perbaikan yang diterapkan ke instans SQL Server dan kolase saat ini. Anda harus menerapkan kembali perbaikan ini setelah membangun kembali database sistem.

    SELECT
    SERVERPROPERTY('ProductVersion ') AS ProductVersion,
    SERVERPROPERTY('ProductLevel') AS ProductLevel,
    SERVERPROPERTY('ResourceVersion') AS ResourceVersion,
    SERVERPROPERTY('ResourceLastUpdateDateTime') AS ResourceLastUpdateDateTime,
    SERVERPROPERTY('Collation') AS Collation;
    
  3. Rekam lokasi semua data dan file log saat ini untuk database sistem. Membangun kembali database sistem menginstal semua database sistem ke lokasi aslinya. Jika Anda telah memindahkan data database sistem atau file log ke lokasi lain, Anda harus memindahkan file lagi.

    SELECT name, physical_name AS current_file_location
    FROM sys.master_files
    WHERE database_id IN (DB_ID('master'), DB_ID('model'), DB_ID('msdb'), DB_ID('tempdb'));
    
  4. Temukan cadangan saat ini dari database master, model, dan msdb.

  5. Jika instans SQL Server dikonfigurasi sebagai distributor replikasi, temukan cadangan distribution database saat ini.

  6. Pastikan Anda memiliki izin yang sesuai untuk membangun kembali database sistem. Untuk menjalankan operasi ini, Anda harus menjadi anggota dari peran tetap server sysadmin. Untuk informasi selengkapnya, lihat Peran Tingkat Server.

  7. Verifikasi bahwa salinan data dan file templat log master, model, msdb ada di server lokal. Lokasi default untuk file templat adalah C:\Program Files\Microsoft SQL Server\MSSQL<xx>.MSSQLSERVER\MSSQL\Binn\Templates (di mana <xx> adalah versi yang telah Anda instal). File-file ini digunakan selama proses pembangunan ulang dan harus ada agar Penyetelan berhasil. Jika hilang, jalankan fitur Perbaikan Penyiapan, atau salin file secara manual dari media penginstalan Anda. Untuk menemukan file di media penginstalan, navigasikan ke direktori platform yang sesuai (x86 atau x64) lalu navigasikan ke setup\sql_engine_core_inst_msi\Pfiles\SqlServr\MSSQL.X\MSSQL\Binn\Templates.

Membangun kembali database sistem

Prosedur berikut membangun kembali database sistem master, model, msdb, dan tempdb. Anda tidak dapat menentukan database sistem yang akan dibangun kembali. Untuk instans terkluster, prosedur ini harus dilakukan pada simpul aktif dan sumber daya SQL Server dalam grup aplikasi kluster yang sesuai harus diambil secara offline sebelum melakukan prosedur.

Prosedur ini tidak membangun kembali database resource. Lihat bagian Membangun ulang database sistem sumber daya nanti di artikel ini.

Membangun kembali database sistem untuk instans SQL Server

  1. Masukkan media penginstalan SQL Server ke drive disk, atau, dari prompt perintah, ubah direktori ke lokasi setup.exe file di server lokal. Untuk SQL Server 2022 (16.x), lokasi default di server adalah C:\Program Files\Microsoft SQL Server\160\Setup Bootstrap\SQLServer2022.

  2. Dari jendela prompt perintah, masukkan perintah berikut. Kurung siku digunakan untuk menunjukkan parameter opsional. Jangan masukkan tanda kurung. Saat menggunakan sistem operasi Windows yang mengaktifkan Kontrol Akun Pengguna (UAC), menjalankan Penyetelan memerlukan hak istimewa yang ditingkatkan. Perintah harus dijalankan sebagai Administrator.

    setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=InstanceName /SQLSYSADMINACCOUNTS=accounts [ /SAPWD= StrongPassword ] [ /SQLCOLLATION=CollationName ]
    
    Nama Parameter Deskripsi
    /QUIET atau /Q Menentukan bahwa Penyetelan harus berjalan tanpa antarmuka pengguna apa pun.
    /ACTION=REBUILDDATABASE Menentukan bahwa Penyetelan harus membuat ulang database sistem.
    /INSTANCENAME=InstanceName Nama instans SQL Server. Untuk instans default, masukkan MSSQLSERVER.
    /SQLSYSADMINACCOUNTS=accounts Menentukan kelompok Windows atau akun individual untuk ditambahkan ke peran server sysadmin tetap. Saat menentukan lebih dari satu akun, pisahkan akun dengan ruang kosong. Misalnya, masukkan BUILTIN\Administrators MyDomain\MyUser. Saat Anda menentukan akun yang berisi ruang kosong dalam nama akun, sertakan akun dalam tanda kutip ganda. Misalnya, masukkan NT AUTHORITY\SYSTEM.
    [ /SAPWD=StrongPassword ] Menentukan kata sandi untuk akun sa SQL Server. Parameter ini diperlukan jika instans menggunakan mode Autentikasi Campuran (SQL Server dan Autentikasi Windows).

    Catatan keamanan: Akun sa adalah akun SQL Server terkenal dan sering ditargetkan oleh pengguna berbahaya. Sangat penting bahwa Anda menggunakan kata sandi yang kuat untuk login sa .

    Jangan tentukan parameter ini untuk mode Autentikasi Windows.
    [ /SQLCOLLATION=CollationName ] Menentukan pengaturan pengurutan tingkat server yang baru. Parameter ini bersifat opsional. Ketika tidak ditentukan, kolasi server yang saat ini digunakan akan diterapkan.

    Penting: Mengubah kolatasi tingkat server tidak mengubah kolatasi database pengguna yang ada. Semua database pengguna yang baru dibuat akan menggunakan kolatasi baru secara default.

    Untuk informasi selengkapnya, lihat Mengatur atau Mengubah Kolasi Server.
    [ /SQLTEMPDBFILECOUNT=NumberOfFiles ] Menentukan jumlah tempdb file data. Nilai ini dapat ditingkatkan hingga 8 atau jumlah inti, mana yang lebih tinggi.

    Nilai default: 8 atau jumlah inti, mana yang lebih rendah.
    [ /SQLTEMPDBFILESIZE=FileSizeInMB ] Menentukan ukuran awal setiap tempdb file data dalam MB. Penyiapan memungkinkan ukuran hingga 1024 MB.

    Nilai default: 8
    [ /SQLTEMPDBFILEGROWTH=FileSizeInMB ] Menentukan kenaikan pertumbuhan file dari setiap tempdb file data dalam MB. Nilai 0 menunjukkan bahwa pertumbuhan otomatis tidak aktif dan tidak ada ruang tambahan yang diizinkan. Penyiapan memungkinkan ukuran hingga 1024 MB.

    Nilai default: 64
    [ /SQLTEMPDBLOGFILESIZE=FileSizeInMB ] Menentukan ukuran awal file log tempdb dalam MB. Penyiapan memungkinkan ukuran hingga 1024 MB.

    Nilai default: 8.

    Rentang yang diizinkan: Min = 8, maks = 1024.
    [ /SQLTEMPDBLOGFILEGROWTH=FileSizeInMB ] Menentukan kenaikan pertumbuhan log file tempdb dalam MB. Nilai 0 menunjukkan bahwa pertumbuhan otomatis tidak aktif dan tidak ada ruang tambahan yang diizinkan. Penyiapan memungkinkan ukuran hingga 1024 MB.

    Nilai default: 64

    Rentang yang diizinkan: Min = 8, maks = 1024.
    [ /SQLTEMPDBDIR=Direktori ] Menetapkan direktori untuk file data tempdb. Saat menentukan lebih dari satu direktori, pisahkan direktori dengan spasi kosong. Jika beberapa direktori ditentukan, file data akan tersebar di seluruh direktori dengan cara bergiliran.

    Nilai default: Direktori Data Sistem
    [ /SQLTEMPDBLOGDIR=Direktori ] Menentukan direktori untuk file log tempdb.

    Nilai default: Direktori Data Sistem
  3. Ketika Penyetelan telah selesai membangun ulang database sistem, kembali ke prompt perintah tanpa pesan. Periksa file log Summary.txt untuk memverifikasi bahwa proses berhasil diselesaikan. File ini terletak di C:\Program Files\Microsoft SQL Server\160\Setup Bootstrap\Logs.

  4. Skenario RebuildDatabase menghapus database sistem dan menginstalnya lagi dalam keadaan bersih. Karena pengaturan tempdb jumlah file tidak tetap, jumlah tempdb file tidak diketahui selama pengaturan. Oleh karena itu, skenario ebuildDatabase tidak tahu jumlah tempdb file yang akan dibaca. Anda dapat memberikan nilai jumlah tempdb file lagi dengan parameter SQLTEMPDBFILECOUNT. Jika parameter tidak disediakan, RebuildDatabase akan menambahkan jumlah file default sebanyak tempdb, yaitu sebanyak file tempdb sebesar jumlah CPU atau 8, mana yang lebih rendah.

Tugas pasca-pembangunan ulang

Setelah membangun ulang database, Anda mungkin perlu melakukan tugas tambahan berikut:

  • Pulihkan cadangan lengkap terbaru Anda dari masterdatabase , model, dan msdb . Untuk informasi selengkapnya, lihat Mencadangkan dan Memulihkan Database Sistem (SQL Server).

    Penting

    Jika Anda telah mengubah kolatasi server, jangan pulihkan database sistem. Melakukannya akan mengganti kolasi baru dengan pengaturan kolasi sebelumnya.

    Jika cadangan tidak tersedia atau jika cadangan yang dipulihkan tidak terkini, buat ulang entri yang hilang. Misalnya, buat ulang semua entri yang hilang untuk database pengguna Anda, perangkat cadangan, login SQL Server, titik akhir, dan sebagainya. Cara terbaik untuk membuat ulang entri adalah dengan menjalankan skrip asli yang membuatnya.

    Penting

    Kami menyarankan agar Anda mengamankan skrip Anda untuk mencegah perubahannya oleh individu yang tidak sah.

  • Jika instans SQL Server dikonfigurasi sebagai distributor replikasi, Anda harus memulihkan distribution database. Untuk informasi selengkapnya, lihat Mencadangkan dan Memulihkan Database yang Direplikasi.

  • Pindahkan database sistem ke lokasi yang Anda rekam sebelumnya. Untuk informasi selengkapnya, lihat Memindahkan Database Sistem.

  • Verifikasi nilai konfigurasi di seluruh server cocok dengan nilai yang Anda rekam sebelumnya.

Membangun kembali database sumber daya

Prosedur berikut membangun kembali database sistem resource. Ketika Anda membangun kembali database resource, semua pembaruan cepat hilang, sehingga harus diterapkan kembali.

Membangun kembali database sistem sumber daya

  1. Luncurkan program Penyiapan SQL Server (setup.exe) dari media distribusi.

  2. Di area navigasi kiri, pilih Pemeliharaan, lalu pilih Perbaiki.

  3. Menyiapkan aturan dukungan untuk pemasangan dan menjalankan rutinitas file guna memastikan bahwa sistem Anda telah menginstal prasyarat dan komputer memenuhi aturan validasi pemasangan. Pilih OK atau Instal untuk melanjutkan.

  4. Pada halaman Pilih Instans, pilih instans untuk diperbaiki, lalu pilih Berikutnya.

  5. Aturan perbaikan akan berjalan untuk memvalidasi operasi. Untuk melanjutkan, pilih Berikutnya.

  6. Dari halaman Siap Diperbaiki , pilih Perbaiki. Halaman Selesai menunjukkan bahwa operasi selesai.

Membuat database msdb baru

msdb Jika database rusak atau dicurigai dan Anda tidak memiliki cadangan msdb database, Anda bisa membuat msdb database baru dengan menggunakan instmsdb skrip.

Peringatan

Membangun kembali database menggunakan skrip msdb akan menghilangkan semua informasi yang disimpan di instmsdb.sql seperti pekerjaan, pemberitahuan, operator, rencana pemeliharaan, riwayat pencadangan, pengaturan Manajemen Berbasis Kebijakan, Surat Elektronik Basis Data, Pusat Data Kinerja, dan sebagainya.

  1. Hentikan semua layanan yang terhubung ke Mesin Database, termasuk SQL Server Agent, SSRS, SSIS, dan semua aplikasi yang menggunakan SQL Server sebagai penyimpanan data.

  2. Mulai SQL Server dari baris perintah menggunakan perintah :

    NET START MSSQLSERVER /T3608
    

    Untuk informasi selengkapnya, lihat Mulai, Hentikan, Jeda, Lanjutkan, Mulai Ulang Mesin Database, Agen SQL Server, atau Layanan Browser SQL Server. Untuk informasi tentang bendera pelacakan 3608, lihat TF3608.

  3. Di jendela baris perintah lain, lepaskan msdb database dengan menjalankan perintah berikut, mengganti <servername> dengan instans SQL Server:

    SQLCMD -E -S<servername> -dmaster -Q"EXEC sp_detach_db msdb"
    
  4. Menggunakan Windows Explorer, ganti nama msdb file database. Secara default ini ada di subfolder DATA untuk instans SQL Server.

  5. Menggunakan Pengelola Konfigurasi SQL Server, hentikan dan mulai ulang layanan Mesin Database biasanya tanpa bendera pelacakan tambahan.

  6. Di jendela prompt perintah, sambungkan ke SQL Server dan jalankan perintah:

    SQLCMD -E -S<servername> -i"C:\Program Files\Microsoft SQL Server\MSSQLXX.INSTANCE_NAME\MSSQL\Install\instmsdb.sql" -o"C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Install\instmsdb.out"
    

    Ganti <servername> dengan instans Mesin Database. Gunakan jalur sistem file instans SQL Server. Selain itu, ganti MSSQLXX.INSTANCE_NAME dengan direktori yang sesuai dengan versi dan instans Anda.

  7. Menggunakan Windows Notepad, buka instmsdb.out file dan periksa output untuk kesalahan apa pun.

  8. Terapkan kembali semua CUs yang terpasang pada instans untuk meningkatkan database Anda msdb ke tingkat CU saat ini.

  9. Buat ulang konten pengguna yang disimpan dalam msdb database, seperti pekerjaan, pemberitahuan, dan item lainnya.

  10. Cadangkan basis data msdb.

Membangun kembali database tempdb

Jika database tempdb rusak atau dicurigai dan mesin database gagal dimulai, Anda dapat membangun ulang tempdb tanpa perlu membangun ulang semua database sistem.

  1. Ubah nama file tempdb.mdf dan templog.ldf saat ini, jika tidak hilang.

  2. Mulai SQL Server dari Command Prompt dengan menggunakan aplikasi sqlservr.

    sqlservr -c -f -T3608 -T4022 -s <instance> -mSQLCMD
    

    Untuk nama instans default, gunakan MSSQLSERVER, untuk instans bernama gunakan MSSQL$<instance_name>. Trace flag 4022 menonaktifkan eksekusi prosedur tersimpan saat startup. -mSQLCMD hanya memungkinkan sqlcmd.exe untuk terhubung ke server. Untuk informasi selengkapnya, lihat Opsi Startup Lainnya.

    Catatan

    Pastikan bahwa jendela prompt perintah tetap terbuka setelah SQL Server dimulai. Menutup jendela prompt perintah akan mengakhiri proses.

  3. Sambungkan ke server dengan menggunakan sqlcmd, lalu gunakan prosedur tersimpan tempdb berikut untuk mengatur ulang status database.

    exec master..sp_resetstatus tempdb
    
  4. Matikan server dengan menekan Ctrl+C di jendela prompt perintah.

  5. Mulai ulang layanan SQL Server. Ini membuat sekumpulan tempdb file database baru, dan memulihkan tempdb database.

Memecahkan masalah kesalahan pembangunan ulang

Sintaksis dan kesalahan run-time lainnya ditampilkan di jendela command prompt. Periksa pernyataan Penyiapan untuk kesalahan sintaks berikut:

  • Tanda garis miring hilang (/) di depan setiap nama parameter.

  • Tanda sama dengan (=) tidak ada antara nama parameter dan nilai parameter.

  • Kehadiran spasi kosong antara nama parameter dan tanda sama dengan.

  • Kehadiran koma (,) atau karakter lain yang tidak ditentukan dalam sintaks.

Setelah operasi pembangunan ulang selesai, periksa log SQL Server untuk kesalahan apa pun. Lokasi log default adalah C:\Program Files\Microsoft SQL Server\160\Setup Bootstrap\Logs. Untuk menemukan file log yang berisi hasil proses pembangunan ulang, ubah direktori ke folder Log dari prompt perintah, lalu jalankan findstr /s RebuildDatabase summary*.*. Pencarian ini akan mengarahkan Anda ke file log apa pun yang berisi hasil pembangunan ulang database sistem. Buka file log dan periksa untuk pesan kesalahan yang relevan.