Anda sedang offline saat ini, menunggu internet Anda untuk menyambung kembali

Cara menyusutkan pangkalan data tempdb di SQL Server

PENTING: Artikel ini diterjemahkan oleh perangkat lunak penerjemahan mesin Microsoft, dan mungkin telah diedit oleh Masyarakat Microsoft melalui teknologi CTF dan bukan oleh seorang penerjemah profesional. Microsoft menawarkan baik artikel yang diterjemahkan oleh manusia maupun artikel hasil editan terjemahan oleh mesin/komunitas, sehingga Anda dapat mengakses semua artikel di Sentra Pengetahuan yang kami miliki dalam berbagai bahasa. Namun artikel hasil editan mesin atau bahkan komunitas tidak selalu sempurna. Artikel ini dapat mengandung kesalahan dalam hal kosa kata, sintaksis atau tatabahasa, sangat mirip dengan penutur asing yang membuat kekeliruan ketika berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab atas ketidakakuratan, kesalahan atau kerugian apa pun akibat dari kekeliruan dalam penerjemahan isi atau penggunaannya oleh pelanggan kami. Microsoft juga akan senantiasa memperbarui perangkat lunak penerjemahan mesin dan alat untuk menyempurnakan Editan Hasil Penerjemahan Mesin.

Klik disini untuk melihat versi Inggris dari artikel ini: 307487
Ringkasan
Artikel ini membahas berbagai metode yang dapat Anda gunakan untuk menyusutkan pangkalan data tempdb di Microsoft SQL Server. Sebelum Anda menyusutkan pangkalan data tempdb dengan menggunakan metode yang dijelaskan di artikel ini, Perhatikan hal berikut:
  • Ukuran Code reset ke ukuran dikonfigurasi terakhir (yaitu, ukuran default, atau ukuran terakhir yang ditetapkan dengan menggunakan mengubah database) setelah restart masing-masing. Oleh karena itu, kecuali jika Anda harus menggunakan nilai yang berbeda atau mendapatkan jeda langsung, Anda tidak harus menggunakan salah satu dari prosedur yang didokumentasikan dalam artikel ini. Anda dapat menunggu untuk restart berikutnya layanan SQL Server untuk mengurangi ukuran. Ukuran pangkalan data tempdb yang lebih besar akan tidak mempengaruhi kinerja SQL Server.
  • Pada SQL Server 2005 dan versi yang lebih baru, menyusutkan pangkalan data tempdb ada perbedaan menyusutkan pangkalan data pengguna kecuali kenyataan bahwa Code me-reset ke ukuran dikonfigurasi setelah setiap restart contoh SQL Server.
  • Cukup aman untuk menjalankan mengecilkan Code sementara Code aktivitas sedang berlangsung. Namun, Anda mungkin mengalami galat lainnya seperti pemblokiran, kemogokan, dan sebagainya yang dapat mencegah menyusut menyelesaikan. Oleh karena itu, untuk memastikan bahwa menyusut Code akan berhasil, kami sarankan Anda melakukannya saat server berada dalam mode pengguna tunggal atau apabila Anda telah dihentikan semua Code aktivitas.

Code informasi

Database Code adalah kerja sementara. SQL Server menggunakan code untuk melakukan banyak tugas. Antara tugas tersebut adalah sebagai berikut:
  • Penyimpanan Daftar Tabel sementara secara eksplisit dibuat
  • Worktables yang menyimpan hasil antara yang dibuat selama permintaan pengolahan dan menyortir
  • Muncul statis kursor
  • Penyimpanan Catatan versi saat Rekam Jepret isolasi tingkat atau tingkat isolasi berkomitmen Baca Rekam Jepret yang digunakan
SQL Server catatan hanya cukup informasi dalam log transaksi code untuk memutar kembali transaksi, tetapi tidak untuk mengulang transaksi selama pemulihan database. Fitur ini meningkatkan kinerja INSERT pernyataan dalam Code. Selain itu, Anda tidak harus log informasi untuk mengulang transaksi karena code kembali dibuat setiap kali Anda me-restart SQL Server. Oleh karena itu, telah ada transaksi gulung maju atau kembali. Ketika SQL Server dimulai, code kembali dibuat dengan menggunakan kopi karbon dari model database dan Code reset ke ukuran dikonfigurasi terakhir. Ukuran dikonfigurasi adalah ukuran eksplisit terakhir yang ditetapkan dengan menggunakan ukuran file yang mengubah operasi seperti Mengubah DATABASE yang menggunakan Memodifikasi FILE pilihan atau pernyataan DBCC SHRINKFILE atau DBCC SHRINKDATABASE .

secara asali, database Code dikonfigurasi untuk pengembangan otomatis sesuai yang diperlukan. Oleh karena itu, database ini mungkin tiba-tiba tumbuh dalam waktu ke ukuran yang lebih besar daripada ukuran yang diinginkan. Restart sederhana SQL Server me-reset ukuran Code untuk ukuran konfigurasi terakhir.

Pada SQL Server 2005 dan versi yang lebih baru, Anda dapat menggunakan salah satu metode berikut ini untuk mengubah ukuran Code.

MetodeKomputer harus direstart?Informasi lebih lanjut
MENGUBAH DATABASEYaMemberikan lengkap kontrol pada ukuran asali Code file (tempdev dan templog).
DBCC SHRINKDATABASETidak adaBeroperasi pada tingkat database.
DBCC SHRINKFILETidak adaMemungkinkan Anda untuk mengecilkan file individu.
SQL Server Management StudioTidak adaIni pada dasarnya adalah cara untuk mengecilkan file database melalui GUI.

Catatan SQL Server Management Studio di SQL Server 2005 tidak menunjukkan ukuran benar code file setelah operasi menyusut. Nilai "Saat ini dialokasikan ruang" selalu ditarik dari sys.master_files DMV, dan nilai ini tidak dimutakhirkan setelah operasi menyusut terjadi karena pangkalan data tempdb. Untuk menemukan ukuran benar code file setelah operasi menyusut, jalankan pernyataan berikut di SQL Server Management Studio:

use tempdbgoselect (size*8) as FileSizeKB from sys.database_files
Tiga metode pertama yang dibahas di sini.

Catatan Untuk penginstalan SQL Server 2000, Anda harus menggunakan Query Analyzer bukannya SQL Server Management Studio. Selain itu, perintah DBCC akan meminta Anda untuk menempatkan pangkalan data dalam mode pengguna tunggal.

Anda dapat menggunakan tiga metode berikut ini untuk mengecilkan Code untuk ukuran yang lebih kecil daripada ukuran dikonfigurasi.

Metode 1: Perintah Transact-SQL menggunakan
Catatan Metode ini mengharuskan Anda untuk me-restart SQL Server.
  1. Berhenti SQL Server.
  2. Pada prompt perintah, jalankan contoh pada mode konfigurasi minimum. Untuk melakukannya, ikuti langkah-langkah berikut:
    1. Pada prompt perintah, Ubah ke folder berikut ini:
    2. Jika contoh contoh yang disebutkan dari SQL Server, jalankan perintah berikut ini:
      sqlservr.exe -s InstanceName - c -f
      Jika contoh contoh SQL Server default, jalankan perintah berikut ini:
      sqlservr - c -f
      Catatan
      Parameter - c dan -f menyebabkan SQL Server untuk memulai dalam mode konfigurasi minimal yang memiliki ukuran Code 1 MB untuk berkas data dan 0.5 MB untuk berkas log.
  3. Menyambung ke SQL Server dengan menggunakan Query Analyzer, dan kemudian jalankan perintah Transact-SQL berikut ini:
       ALTER DATABASE tempdb MODIFY FILE   (NAME = 'tempdev', SIZE = target_size_in_MB)    --Desired target size for the data file   ALTER DATABASE tempdb MODIFY FILE   (NAME = 'templog', SIZE = target_size_in_MB)   --Desired target size for the log file					
  4. Berhenti SQL Server. Untuk melakukannya, tekan Ctrl + C di jendela wantian perintah, restart SQL Server sebagai layanan, dan kemudian verifikasi ukuran file Tempdb.mdf dan Templog.ldf.
Batasan dari metode ini adalah mengoperasikan hanya pada asali tempdb Logis file tempdev dan templog. Jika file lebih ditambahkan ke Code, Anda dapat menyusut mereka setelah Anda me-restart SQL Server sebagai layanan. Semua Code file dibuat ulang selama persiapan. Namun, mereka kosong dan dapat dihapus. Untuk menghapus file-file tambahan di Code, gunakan perintah Mengubah DATABASE dengan menggunakan opsi Menghapus FILE .

Metode 2: Gunakan perintah DBCC SHRINKDATABASE
Gunakan perintah DBCC SHRINKDATABASE untuk mengecilkan Code database. DBCC SHRINKDATABASE menerima parameter target_percent. Ini adalah persentase yang dikehendaki dari ruang bebas yang tersisa di database file setelah database menyusut. Jika Anda menggunakan DBCC SHRINKDATABASE, Anda mungkin harus me-restart SQL Server.
  1. Menentukan ruang yang saat ini digunakan dalam Code dengan menggunakan sp_spaceused prosedur tersimpan. Kemudian, menghitung persentase ruang bebas yang tersisa untuk digunakan sebagai parameter ke DBCC SHRINKDATABASE. Perhitungan ini didasarkan pada ukuran database yang diinginkan.

    Catatan Dalam beberapa kasus, Anda mungkin harus menjalankan sp_spaceused @updateusage = true untuk menghitung ulang ruang yang digunakan dan untuk mendapatkan laporan diperbarui. Merujuk ke buku daring SQL Server untuk informasi lebih lanjut tentang sp_spaceused prosedur tersimpan.

    Pertimbangkan contoh berikut:
    Berasumsi bahwa Code memiliki dua file: berkas data primer (Tempdb.mdf) yang 100 MB dan berkas log (Tempdb.ldf) yang adalah 30 MB. Berasumsi bahwa sp_spaceused laporan bahwa berkas data primer berisi 60 MB data. Selain itu, menganggap bahwa Anda ingin menyusut berkas data primer untuk 80 MB. Hitung persentase yang dikehendaki dari ruang kiri setelah menyusut: 80 MB-60 MB = 20 MB. Sekarang, membagi 20 MB oleh 80 MB = 25 persen, dan yang telah Andatarget_percent. Berkas log transaksi menyusut sesuai, meninggalkan 25% atau 20 MB ruang bebas setelah database menyusut.
  2. Menyambung ke SQL Server dengan menggunakan Query Analyzer, dan kemudian jalankan perintah Transact-SQL berikut ini:
       dbcc shrinkdatabase (tempdb, 'target percent')    -- This command shrinks the tempdb database					
Ada batasan penggunaan perintah DBCC SHRINKDATABASE pada Code database. Ukuran sasaran untuk data dan berkas log tidak dapat lebih kecil daripada ukuran yang ditentukan ketika database telah dibuat atau lebih kecil daripada ukuran terakhir yang secara eksplisit menetapkan menggunakan operasi mengubah ukuran berkas seperti Mengubah DATABASE yang menggunakan opsi Mengubah berkas atau perintah. Batasan lain dari BCC SHRINKDATABASE adalah perhitungan target_percentage parameter dan ketergantungan pada saat ini ruang yang digunakan.

Metode 3: Gunakan perintah DBCC SHRINKFILE
Gunakan perintah DBCC SHRINKFILE untuk mengecilkan individu Code file. DBCC SHRINKFILE menyediakan lebih banyak fleksibilitas daripada DBCC SHRINKDATABASE karena Anda dapat menggunakannya pada file database tunggal tanpa mempengaruhi file lain yang milik database yang sama. DBCC SHRINKFILE menerima target ukuran parameter. Ini adalah ukuran akhir yang diinginkan untuk database file.
  1. Tentukan ukuran yang diinginkan untuk berkas data primer (tempdb.mdf), file log (templog.ldf) dan berkas tambahan yang ditambahkan ke Code. Pastikan bahwa ruang yang digunakan dalam file adalah kurang dari atau sama dengan ukuran yang diinginkan target.
  2. Menyambung ke SQL Server dengan menggunakan Query Analyzer, dan kemudian jalankan perintah Transact-SQL berikut untuk file database spesifik yang Anda inginkan untuk mengecilkan:
       use tempdb   go   dbcc shrinkfile (tempdev, 'target size in MB')   go   -- this command shrinks the primary data file   dbcc shrinkfile (templog, 'target size in MB')   go   -- this command shrinks the log file, examine the last paragraph.						
Keuntungan dari DBCC SHRINKFILE adalah bahwa hal itu dapat mengurangi ukuran berkas ke ukuran yang lebih kecil daripada ukuran aslinya. Anda dapat mengeluarkan DBCC SHRINKFILE pada setiap data atau berkas log. Batasan dari DBCC SHRINKFILE adalah bahwa Anda tidak dapat membuat pangkalan data yang lebih kecil daripada ukuran model database.

Gunakan perintah DBCC SHRINKFILE untuk mengecilkan individu Code file. DBCC SHRINKFILE menyediakan lebih banyak fleksibilitas daripada DBCC SHRINKDATABASE karena Anda dapat menggunakannya pada file database tunggal tanpa mempengaruhi file lain yang milik database yang sama. DBCC SHRINKFILE menerima target ukuran parameter. Ini adalah ukuran akhir yang diinginkan untuk database file.


2501 dan 8909 kesalahan ketika Anda menjalankan operasi menyusut

Jika Code sedang digunakan, dan jika Anda mencoba untuk mengecilkan dengan menggunakan perintah DBCC SHRINKDATABASE atau DBCC SHRINKFILE , Anda mungkin menerima pesan yang menyerupai berikut ini, tergantung pada versi SQL Server yang sedang Anda gunakan:

SQL Server 2005 dan versi yang lebih baru

Server: Msg 8909, tingkat 16, negara bagian 1, baris 1 galat tabel: ID objek 0, indeks ID -1, partisi ID 0, alloc unit ID 0 (jenis diketahui), halaman ID (6:8040) berisi ID halaman yang salah dalam hulu halaman. PageId di hulu halaman = (0:0).

SQL Server 2000

Server: Msg 2501, tingkat 16, negara bagian 1, baris 1 dapat tidak menemukan Daftar Tabel yang bernama '1525580473'. Periksa sysobjects.
Server: Msg 8909, tingkat 16, negara bagian 1, baris 0 Daftar Tabel korupsi: ID objek 1, indeks ID 0, halaman ID % S_PGID. PageId di hulu halaman = % S_PGID.
Catatan
  • Galat ini menunjukkan korupsi nyata di Code. Namun, perlu diketahui bahwa mungkin ada alasan lain untuk kesalahan korupsi data secara fisik seperti kesalahan 8909 dan alasan tersebut meliputi I/O subsistem masalah. Oleh karena itu, jika kesalahan terjadi di luar menyusut operasi, Anda harus melakukan investigasi lebih lanjut.
  • Pada SQL Server 2005 dan versi yang lebih baru, meskipun pesan 8909 dikembalikan ke aplikasi atau pengguna yang menjalankan operasi menyusut operasi menyusut tidak akan gagal.
  • Di SQL Server 2000 dan versi sebelumnya, galat ini akan menyebabkan menyusut operasi gagal. Oleh karena itu untuk mengecilkan Code database, Anda harus me-restart SQL Server untuk membuat ulang Code. Untuk informasi selengkapnya, klik nomor artikel berikut ini untuk melihat artikel di Pangkalan Pengetahuan Microsoft:
    277848 Pesan galat "Tabel rusak objek ID 0, indeks ID 0, halaman ID" terjadi ketika Anda menjalankan DBCC DBREINDEX di SQL Server


Peringatan: Artikel ini telah diterjemahkan secara otomatis

Properti

ID Artikel: 307487 - Tinjauan Terakhir: 04/25/2016 16:00:00 - Revisi: 6.0

Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 7.0 Standard Edition, Microsoft SQL Server 2000 64-bit Edition, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2005 Workgroup Edition, Microsoft SQL Server 2008 Developer, Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2008 R2 Datacenter, Microsoft SQL Server 2008 R2 Developer, Microsoft SQL Server 2008 R2 Enterprise, Microsoft SQL Server 2008 R2 Parallel Data Warehouse, Microsoft SQL Server 2008 R2 Standard, Microsoft SQL Server 2008 R2 Web, Microsoft SQL Server 2008 Standard, Microsoft SQL Server 2008 Web, Microsoft SQL Server 2008 Workgroup, Microsoft SQL Server 2012 Developer, Microsoft SQL Server 2012 Enterprise, Microsoft SQL Server 2012 Standard, Microsoft SQL Server 2012 Web, Microsoft SQL Server 2014 Business Intelligence, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Enterprise Core, Microsoft SQL Server 2014 Express, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2014 Web, Microsoft SQL Server 2016 Developer, Microsoft SQL Server 2016 Enterprise, Microsoft SQL Server 2016 Enterprise Core, Microsoft SQL Server 2016 Standard

  • kbsqlsetup kbhowtomaster kbmt KB307487 KbMtid
Tanggapan
/html>