Membangun kembali indeks SQL Server 2008 R2 gagal dengan tingkat keparahan 17

12

Kadang-kadang selama pemeliharaan indeks kami, pekerjaan itu akan gagal dengan kesalahan SEV 17 di mana cukup ruang tidak dapat dialokasikan untuk objek yang sedang dibangun kembali. Basis data ditata sedemikian rupa:

Data_file1    PRIMARY    0 growth         0% free                Max Size UNLIMITED
Data_file2    PRIMARY    0 growth         0% free                Max Size UNLIMITED
Data_file3    PRIMARY    0 growth         Less than 1% free      Max Size UNLIMITED
Data_file4    PRIMARY    250 MB growth    Less than 1% free      Max Size UNLIMITED

Pada dasarnya, 3 dari 4 file data penuh dan tidak diizinkan tumbuh, yang keempat penuh dan diizinkan untuk tumbuh. File-file tersebar di berbagai LUN (dan alasan mengapa berantakan). Jadi ketika indeks online dibangun kembali dimulai, ini adalah pemahaman saya bahwa jika ada ruang tambahan yang diperlukan, itu akan tumbuh menjadi Data_file4 dan baik-baik saja, tetapi tampaknya mencoba untuk tumbuh menjadi file yang berbeda di mana pertumbuhan tidak diperbolehkan dan gagal. Saya tidak dapat mereproduksi kesalahan ini, tetapi saya bertanya-tanya apakah ada yang tahu mengapa ini terjadi.

Versi SQL Server lengkap adalah 2008 R2 Enterprise, SP2 CU 4 (10.50.4270). Kami menggunakan skrip rekondisi Ola Hallengren, tempat kami membangun kembali secara online tetapi tidak ada penyortiran tempdb.

Mike Fal
sumber
Apakah ukuran file maks ditentukan? Dokumen mengatakan If max_size is not specified, the file size will increase until the disk is full.Diberikan, jika pertumbuhan otomatis tidak aktif, itu seharusnya tidak mencoba mengalokasikan dari file-file itu ( A value of 0 indicates that automatic growth is set to off and no additional space is allowed.), tetapi mungkin ada bug, jadi tidak ada salahnya untuk mencobanya jika tidak disetel.
Jon Seigel
max_size issaat ini diatur ke UNLIMITED, bahkan pada yang 0 pertumbuhan. Saya sedang menyelidiki ini dalam tes repro saya sekarang.
Mike Fal
Apakah Anda mencatat hasilnya? Jika Anda menyimpan catatan historis apakah kesalahan terjadi pada indeks yang sama setiap kali gagal?
Cougar9000
Berapa halaman indeks yang dimaksud?
Mark Wilkinson
Juga, apakah ini kesalahan yang dihasilkan oleh skrip, atau kesalahan SQL Server yang sebenarnya? Saya bertanya karena saya bertanya-tanya apakah mungkin Anda mencapai batas ukuran log transaksi, yang bertentangan dengan batas ukuran file data, dan skrip tersebut menangani kesalahan dengan tidak benar.
Mark Wilkinson

Jawaban:

1

Pengalaman saya adalah selalu melakukan pembangunan kembali online di filegroup tempat indeks tinggal. Itu harus memetakan indeks yang ada dan menahan ruang yang cukup untuk, pada dasarnya, satu salinan.

Anda seharusnya hanya mendapatkan kesalahan ketika indeks yang terlalu besar untuk menyimpan pemetaan (salinan) dibangun kembali - misalnya, satu kali mungkin cukup terfragmentasi untuk memenuhi syarat dalam skrip Ola dan waktu berikutnya mungkin tidak.

Ada artikel hebat http://technet.microsoft.com/en-us/library/ms179542(v=sql.105).aspx yang harus saya baca beberapa kali ketika mengalami masalah ruang disk dengan indeks.

rottengeek
sumber