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.

Pembatasan dan 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 masterdatabase , , modeldan msdb saat ini.

  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 melakukan operasi ini, Anda harus menjadi anggota peran server tetap sysadmin . Untuk informasi selengkapnya, lihat Peran Tingkat Server.

  7. Verifikasi bahwa salinan masterfile templat , model, msdb data, dan log 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 masterkembali database sistem , , modelmsdb, 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 resource kembali database. 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 grup Windows atau akun individual untuk ditambahkan ke peran server tetap sysadmin . 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 kolater tingkat server baru. Parameter ini bersifat opsional. Ketika tidak ditentukan, kolatasi server saat ini digunakan.

    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 Kolase 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 tempdb awal file log dalam MB. Penyiapan memungkinkan ukuran hingga 1024 MB.

    Nilai default: 8.

    Rentang yang diizinkan: Min = 8, maks = 1024.
    [ /SQLTEMPDBLOGFILEGROWTH=FileSizeInMB ] Menentukan kenaikan tempdb pertumbuhan file file log 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 ] Menentukan direktori untuk tempdb file data. Saat menentukan lebih dari satu direktori, pisahkan direktori dengan spasi kosong. Jika beberapa direktori ditentukan tempdb , file data akan tersebar di seluruh direktori dengan cara round-robin.

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

    Nilai default: Direktori Data Sistem
  3. Ketika Penyetelan telah selesai membangun kembali database sistem, penyetelan 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 bertahan, nilai jumlah tempdb file tidak diketahui selama penyiapan. 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 tempdb file default, yaitu file sebanyak tempdb jumlah CPU atau 8, mana yang lebih rendah.

Tugas pasca-pembangunan ulang

Setelah membangun kembali 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 kolatasi baru dengan pengaturan kolaset 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 resource database

Prosedur berikut membangun resource kembali database sistem. Ketika Anda membangun resource kembali database, semua perbaikan panas hilang, dan oleh karena itu harus diterapkan kembali.

Membangun resource kembali database sistem

  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 dan rutinitas file yang dijalankan untuk memastikan bahwa sistem Anda telah menginstal prasyarat dan bahwa komputer melewati aturan validasi Penyetelan. 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 baru msdb

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

Peringatan

Membangun kembali database menggunakan instmsdb.sql skrip akan menghilangkan semua informasi yang disimpan seperti msdb pekerjaan, pemberitahuan, operator, rencana pemeliharaan, riwayat pencadanganmsdb, pengaturan Manajemen Berbasis Kebijakan, Email Database, Gudang Data Performa, 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 SQL Server Configuration Manager, 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 CUs apa pun yang diinstal pada instans, yang akan 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 msdb database.

Membangun kembali tempdb database

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

  1. Ganti nama file dan templog.ldf saat initempdb.mdf, jika tidak hilang.

  2. Mulai SQL Server dari Prompt Perintah dengan menggunakan perintah berikut.

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

    Untuk nama instans default, gunakan MSSQLSERVER, untuk instans bernama gunakan MSSQL$<instance_name>. Bendera pelacakan 4022 menonaktifkan eksekusi prosedur tersimpan startup. hanya -mSQLCMDmemungkinkan 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 prompt perintah. 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.

Baca juga