Mungkin tidak ada cukup memori virtual ketika Anda memiliki sejumlah besar database dalam SQL Server

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 316749 - Melihat produk di mana artikel ini berlaku.
Perbesar semua | Perkecil semua

GEJALA

Mungkin tidak ada cukup ruang alamat virtual yang tersedia dalam Microsoft SQL Server proses apabila semua kondisi berikut ini benar ketika Anda menjalankan SQL Server dengan default nilai-nilai konfigurasi:
  • Server memiliki 2 GB RAM atau lebih.
  • Ada sejumlah besar database pada sistem (untuk contoh, lebih dari 500).
  • Sebagian besar database diperbarui (misalnya, database tidak memiliki "baca saja" status).
  • Ada cukup pengguna secara bersamaan aktif koneksi ke menggunakan sebagian besar thread pekerja SQL Server 255.
SQL Server dapat menghasilkan pesan galat berikut setelah ruang alamat virtual seluruh 2 GB digunakan atas (atau setelah seluruh 3-GB virtual ruang alamat digunakan pada SQL Server Enterprise Edition dengan / 3 GB beralih pada berkas Boot.ini).

Pesan 1

Kesalahan: 17802, tingkat keparahan: 18 negara: 3
Tidak dapat membuat server acara benang.

Pesan 2

SQL Server tidak bisa bertelur process_loginread benang.

Pesan 3

Peringatan: Membersihkan cache prosedur untuk membebaskan memori yang berdekatan.

Penyangga distribusi: Dicuri = 3454 gratis = 2540 prosedur = 138
Inram = 0 kotor = 1108 terus = 35
I / O = 0, mengunci = 0, lain = 214821
Penyangga hitungan: Berkomitmen = 222096 Target = 222096 Hashed = 215964
InternalReservation = 547 ExternalReservation = 0 Min gratis = 512
Prosedur Cache: TotalProcs = 8 TotalPages = 138 InUsePages = 138
Manajer memori dinamis: dicuri = 3556
OS = 497 umum = 1706
Permintaan rencana = 755 Optimizer = 0
Utilitas = 9 koneksi = 1583
Global memori Objects: Sumber daya = 1119 kunci = 163 XDES = 1 SQLCache = 90 replikasi = 5 LockBytes = 2 ServerGlobal = 20
Manajer memori permintaan: hibah = 0 menunggu = 0 maksimum = 164370 tersedia = 164370

PENYEBAB

Untuk setiap database yang diperbarui, SQL Server mengalokasikan setidaknya satu blok 64 KB untuk digunakan dalam format daftar penelepon sebelum mereka ditulis untuk disk. Alokasi ini terjadi ketika pertama rekaman log yang dihasilkan untuk database, seperti selama INSERT, UPDATE, atau menghapus pernyataan. Tergantung pada aktivitas dan ukuran catatan log yang dihasilkan, selanjutnya modifikasi mungkin memicu Alokasi tambahan Alokasi 64 KB. SQL Server 7.0 akan mengalokasikan no lebih dari tiga blok 54-KB. Dalam SQL Server 2000, jumlah atas alokasi untuk masing-masing database adalah fungsi dari jumlah prosesor yang SQL Server dikonfigurasi untuk menggunakan.

TEKNIK PEMECAHAN MASALAH

Penggunaan -g Startup parameter untuk meninggalkan tambahan, unreserved memori virtual tersedia untuk ini database alokasi. The -g parameter didokumentasikan di Readme.txt SQL Server 7.0 Service pack, dan dalam SQL Server 2000 buku Online. "Informasi selengkapnya" bagian dalam artikel ini berisi pengaturan yang Microsoft menyarankan Anda menggunakan untuk menentukan nilai yang sesuai untuk pengaturan ini.

INFORMASI LEBIH LANJUT

Pada komputer dengan 2 GB RAM atau lebih, SQL Server cadangan semua kecuali 256 MB (SQL Server 7.0) atau alamat virtual 384 MB (SQL Server 2000) ruang selama proses startup untuk digunakan oleh buffer pool. Selain itu, untuk menyimpan data dan prosedur cache, SQL Server menggunakan kolam renang buffer memori untuk layanan sebagian besar permintaan memori lain dari SQL Server proses yang kurang dari 8 KB. Memori unreserved tersisa ini dimaksudkan untuk digunakan dengan lain alokasi yang tidak dilayani dari buffer pool. Alokasi ini termasuk, tetapi tidak terbatas pada:
  • Tumpukan dan terkait benang lingkungan blok untuk setiap Thread yang menciptakan SQL Server. Setelah SQL Server menciptakan semua pekerja 255 benang, ini adalah sekitar 140 MB.
  • Alokasi yang dibuat oleh dll lain atau proses yang berjalan di ruang alamat SQL Server (yang bervariasi dari sistem sistem), seperti:
    • Penyedia OLE DB dari server apapun terkait.
    • Objek COM yang dimuat oleh penggunaan sp_OA sistem disimpan prosedur atau diperpanjang disimpan prosedur.
  • Setiap gambar (.exe atau .dll) yang dimuat ke dalam alamat ruang, yang biasanya menggunakan 20 hingga 25 MB, tapi mungkin lebih jika Anda menggunakan terkait server, sp_OA, atau diperpanjang disimpan prosedur.
  • Proses tumpukan dan tumpukan lain yang mungkin SQL Server membuat. Selama proses startup, ini biasanya 10 MB, tapi mungkin lebih jika Anda menggunakan server terkait, sp_OA, atau diperpanjang disimpan prosedur.
  • Alokasi dari SQL Server proses yang lebih besar daripada 8 KB, seperti yang diperlukan untuk permintaan besar rencana, mengirim dan menerima buffer jika The ukuran paket jaringan pilihan konfigurasi adalah dekat dengan 8 KB, dan seterusnya. Untuk melihat ini nomor, mencari OS milik nilai yang dilaporkan di DBCC MEMORYSTATUS dan yang dilaporkan sebagai jumlah halaman 8-KB. Nilai yang umum untuk ini adalah 5 MB.
  • Array untuk melacak informasi status untuk masing-masing penyangga yang adalah di buffer pool. Biasanya ini adalah sekitar 20 MB, kecuali SQL Server berjalan dengan alamat Windowing Extensions (AWE) diaktifkan, dalam hal ini dapat secara signifikan lebih tinggi.
Pada sistem yang memiliki sejumlah besar database, 64 KB alokasi yang diperlukan untuk log format mungkin menempati semua memori virtual yang tersisa. Pada saat itu, alokasi berikutnya mungkin gagal, menghasilkan satu atau lebih dari galat yang didaftar di dalam "Gejala" bagian dalam artikel ini.

Dengan menggunakan -g Startup parameter, Anda dapat mengajar SQL Server untuk meninggalkan memori virtual tambahan tersedia sehingga kombinasi ini terkait log alokasi dan alokasi normal lainnya tidak kehabisan ruang alamat virtual.

Daftar tabel berikut beberapa disarankan titik awal untuk -g nilai tergantung pada jumlah database dan server Versi:
Perkecil tabel iniPerbesar tabel ini
Pangkalan dataSQL Server 7.0SQL Server 2000
250-g134N/A
500-g185N/A
750-g237N/A
1000-g288-g288
1250-g340-g340
1500-g392-g392
Tabel ini dihitung dengan menggunakan nilai yang umum yang terdaftar dan juga didasarkan pada asumsi bahwa tidak ada terkait server aktivitas, sp_OA atau diperpanjang disimpan prosedur yang digunakan. Itu juga didasarkan pada asumsi bahwa Anda tidak menggunakan KAGUM, dan Profiler SQL yang tidak di gunakan. Setiap kondisi ini mengharuskan Anda untuk meningkatkan nilai -g.

Microsoft menganjurkan bahwa Anda mengambil serius pertimbangan sebelum Anda menjalankan server dengan database lebih daripada ini karena biaya tambahan yang diperlukan untuk memiliki nomor ini database pada sistem mengambil banyak memori virtual dari buffer pool, yang dapat mengakibatkan miskin kinerja untuk sistem secara keseluruhan.

Selain itu, menciptakan banyak database memiliki efek paling signifikan pada memori virtual. Ada juga alokasi memori per-database yang dapat menyebabkan kondisi out memori renang buffer. Sebagai contoh, Anda mungkin menerima pesan galat berikut:
Kesalahan: 701, tingkat keparahan: 17, negara: 123.
Ada memori sistem yang tidak mencukupi untuk menjalankan query ini.
Out memori kondisi semacam ini mungkin lebih umum dalam SQL Server 2005 karena SQL Server 2005 trek lebih per database metadata daripada versi sebelumnya dari SQL Server.

Ketika Anda melacak penggunaan indeks dengan menggunakan sys.dm_db_index_usage_stats prosedur yang tersimpan, operasi mungkin memerlukan sejumlah besar memori. Operasi memerlukan sejumlah besar memori jika database masing-masing memiliki banyak indeks.

Properti

ID Artikel: 316749 - Kajian Terakhir: 24 September 2011 - Revisi: 2.0
Berlaku bagi:
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Standard Edition
Kata kunci: 
kberrmsg kbtshoot kbnofix kbprb kbmt KB316749 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:316749

Berikan Masukan

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com