Filegroup utama adalah SQL Server 2008 lengkap

15

Saya punya meja besar (~ 50 juta baris) Saya mencoba memasukkan secara massal ke SQL Server dan saya mendapatkan kesalahan:

Tidak dapat mengalokasikan ruang untuk objek 'myDB' dalam database 'I 3 Stroke' karena filegroup 'PRIMARY' penuh. Buat ruang disk dengan menghapus file yang tidak dibutuhkan, menjatuhkan objek di filegroup, menambahkan file tambahan ke filegroup, atau mengatur autogrowth untuk file yang ada di filegroup.

Ada tabel lain dalam database dengan sekitar 25 juta baris. Basis data ini hanya akan digunakan pada satu mesin, dan akan dirancang untuk menambang data yang sudah ada dan dalam keadaan apa pun tidak akan pernah tumbuh melebihi ukuran saat ini.

Untuk situasi seperti ini, apa cara terbaik untuk mengatasi ini sehingga SQL Server tidak mengeluh? Akankah solusi menjadi masalah bahwa DB ini tidak akan terpapar ke banyak pengguna?

wootscootinboogie
sumber
2
Anda perlu menambahkan lebih banyak ruang ke database atau menghapus objek yang tidak digunakan. Apa pertanyaan Anda?
Gordon Linoff
@GordonLinoff ketika database dibuat, filegroup dirancang untuk memiliki pertumbuhan yang tidak terbatas, namun saya mengalami masalah ini. Saya berharap menemukan cara untuk mencegah hal ini terjadi lagi.
wootscootinboogie
1
Apakah Anda memiliki lebih banyak ruang disk fisik yang tersedia? Jika demikian, periksa log galat SQL Server dan lihat apakah ada informasi tambahan tentang mengapa autogrowth gagal.
Kevin
Bisakah Anda mengonfirmasi bahwa ruang disk cukup tersedia? Ini adalah satu-satunya penyebab yang masuk akal, kecuali untuk pertumbuhan file terbatas (yang Anda katakan tidak demikian).
usr
1
Mungkin Anda menekan batas ukuran db edisi sql express.
Bruno Martinez

Jawaban:

17

Ikuti langkah ini:

  1. Identifikasi berapa banyak ruang yang ingin Anda tambahkan ke alokasi penyimpanan basis data:
    1. Buka windows explorer
    2. Klik kanan pada drive disk tempat file database Anda berada
    3. Pilih properti
    4. Periksa seberapa banyak ruang disk yang tersedia dan putuskan berapa banyak yang ingin Anda alokasikan untuk basis data
      ( Saran: Biarkan setidaknya 20% ruang disk kosong jika Anda menyimpan file basis data pada disk yang sama dengan OS Anda { Sub-Saran : Don lakukan ini! Membangun kembali / memigrasikan data Anda ke disk itu sendiri; Anda mengacaukan diri sendiri pada I / O.} dan meninggalkan setidaknya 8% untuk disk data murni; angka-angka ini adalah perkiraan dari apa yang saya pikirkan persentase saran aktual adalah. )
  2. Perbarui alokasi penyimpanan untuk database.
    1. Buka SSMS
    2. Klik tab "Lihat"
    3. Pilih "Obyek Explorer"
    4. Buka folder "Databases"
    5. Klik kanan database yang Anda coba masukkan secara massal
    6. Pilih "Properti"
    7. Klik opsi daftar "Files" dari area "Select a page" di sebelah kiri jendela properti
    8. Temukan baris "File database" dengan "Filegroup" sebagai "PRIMARY"
    9. Tambahkan berapa pun megabita yang ingin Anda tambahkan ke alokasi basis data ke nomor "Ukuran Awal (MB)"
    10. Tekan "OK"
      ( Anda mungkin juga ingin mempertimbangkan nilai "Autogrowth" Anda saat berada di sini. )

Anda ingin memberikan alokasi penyimpanan sebanyak mungkin ke basis data Anda. Jika kehabisan ruang Anda akan menerima kesalahan ini tanpa otomatis tumbuh dan jika otomatis tumbuh Anda akan mendapatkan kinerja hit setiap kali harus tumbuh otomatis. Jika Anda hanya kehabisan ruang disk maka itu adalah jawaban Anda dan Anda membutuhkan disk yang lebih besar.

Eric J. Price
sumber
1
Bukankah kita semua menginginkan DIsK yang lebih besar? : P
Santa
12

Express Edition 2014 memiliki batas 10 GB per basis data. Jika tumbuhnya database secara otomatis mencapai titik itu SQL Server melempar pesan kesalahan (tidak jelas?), Tidak menyebutkan batas lisensi. Mungkin ada banyak ruang disk tetapi Anda masih melihat pesan ini.

Ganti rugi jika desain memungkinkan untuk: menggunakan banyak basis data di bawah lisensi ini.

RickC
sumber
1

Database sering kehabisan ruang ketika mereka berada dalam mode pemulihan penuh. Jika Anda tidak melakukan transaksi dan cadangan manual sudah cukup, maka Anda dapat mengubah mode pemulihan menjadi sederhana.

Anda mungkin juga perlu memulihkan ruang dari file log. . . itu bisa dikosongkan tetapi masih menggunakan ruang.

Namun, Anda lebih baik mengajukan pertanyaan ini ke DBA yang mungkin menawarkan lebih banyak solusi.

Gordon Linoff
sumber
Ini bukan masalah pertumbuhan log gagal. Pertumbuhan data gagal.
usr
@ usr. . . Mereka mungkin menempati ruang disk yang mendasari yang sama. Masalahnya adalah kurangnya ruang disk.
Gordon Linoff
Dia mengatakan ruang disk tersedia. Saya secara eksplisit bertanya karena saya juga curiga.
usr
Berapa banyak ruang disk yang tersedia / gratis? Berapa ukuran saat ini dari semua file dalam grup file utama dan apa pengaturan pertumbuhannya? Mungkin saja pertambahan pertumbuhan lebih besar dari ruang kosong yang tersedia.
user9164
1

Dalam pengalaman saya, pesan ini terjadi ketika file utama (.mdf) tidak memiliki ruang untuk menyimpan metadata dari database. File ini termasuk tabel sistem dan mereka hanya menyimpan data mereka ke dalamnya.

Buat beberapa ruang dalam file dan perintah berfungsi lagi. Itu saja, Selamat menikmati

FcoJavier99
sumber