अगर मैं एक्सप्रेस संस्करण आकार सीमा को मार रहा हूं, तो कैसे जांचें?


10

मैं उलझन में हूं। AFAIK SQL Server 2005 एक्सप्रेस में 4GB डेटाबेस डेटा साइज़ की सीमा है । हालाँकि मेरे पास निम्नलिखित परिणाम हैं sp_spaceused:

डेटाबेस का वास्तविक आकार क्या है

  1. यदि मेरा DB आकार की सीमा से टकरा रहा है तो मैं कैसे जांच कर सकता हूं?
  2. क्या अनलॉकेटेड स्पेस अनलिल्ट है जो space leftमैंने सीमा से टकराया है?
  3. मेरे पास कितना स्थान बचा है?
  4. index_sizeसीमा में गणना करता है?

आप msdb.dbo.backupset का backup_size कॉलम देख सकते हैं।

जवाबों:


6

यहाँ एक अच्छी स्क्रिप्ट है जिसे मैं बेशर्मी से यहाँ से काट रहा हूँ :

use [Insert DB Name]

select
a.FILEID,
[FILE_SIZE_MB] = 
convert(decimal(12,2),round(a.size/128.000,2)),
[SPACE_USED_MB] =
convert(decimal(12,2),round(fileproperty(a.name, 'SpaceUsed')/128.000,2)),
[FREE_SPACE_MB] =
convert(decimal(12,2),round((a.size-fileproperty(a.name, 'SpaceUsed'))/128.000,2)) ,
NAME = left(a.NAME,15),
FILENAME = left(a.FILENAME,30)
from
dbo.sysfiles a

यह अच्छा है क्योंकि यह आपको प्रत्येक डीबी फ़ाइल में मुफ्त स्थान देगा (आपके पास कई फाइलें हो सकती हैं और शायद किसी ने इसे कुछ वस्तुओं को प्रत्येक में डालने के लिए सेट किया है) और साथ ही साथ मुक्त आकार भी।

उदाहरण के लिए, आपके पास 4GB डेटा फ़ाइल है जिसमें 3GB खाली स्थान है। हो सकता है कि आपके पास बहुत सारे डेटा के बिना 1 MDF है लेकिन बहुत सारे डेटा के साथ एक एनडीएफ है। यह क्वेरी आपको प्रत्येक फ़ाइल में निःशुल्क आकार और उस फ़ाइल को किस DB को आवंटित किया जाता है, बताएगा। कुल आकार प्राप्त करने के लिए प्रत्येक DB के लिए सभी 'SPACE_USED_MB' जोड़ना याद रखें।

सौभाग्य!

संपादित करें: एक असमर्थित और छोटी गाड़ी कमांड को हटा दिया गया जो मुझे लगा कि मैं इस क्वेरी के लिए यहां पोस्टिंग के साथ दूर हो सकता हूं। :(



पुनश्च यदि आप पुराने, पिछड़े संगतता विचारों का उपयोग करने जा रहे हैं, तो आप इसका उपयोग करके sysaltfilesइसे थोड़ा सरल कर सकते हैं (यह प्रत्येक डेटाबेस में जाने की आवश्यकता को नकारता है)।
हारून बर्ट्रेंड

1
धन्यवाद हारून के लिए sysaltfiles, मैं उस एक में अभी तक नहीं देखा! sp_msforeachdb में बहुत सारे दर्दनाक मुद्दे हैं, लेकिन मुझे एक एसक्यूएल एक्सप्रेस इंस्टाल के लिए लगा जहां आदमी सिर्फ यह जानने के लिए एक क्वेरी चलाना चाहता है कि उसके पास कितना खाली स्थान है।
अली रज़ेगी

सिवाय इसके कि जब यह डेटाबेस को छोड़ देता है और एक त्रुटि नहीं बढ़ाता है ...
हारून बर्ट्रेंड

हाँ, लेकिन इस मामले में, क्या आप वास्तव में सोचते हैं कि यह एक ऐसा मुद्दा होगा जहां अंत उपयोगकर्ता बस एक डीबी आकार की गिनती चाहता है? मुझे लगता है कि मुझे इसे उन मामलों में भी पोस्ट नहीं करना चाहिए जहां अंतिम उपयोगकर्ता बिल्कुल देखेगा कि क्या यह डीबी को छोड़ दिया गया है ताकि वे इसे ढूंढ रहे हैं ताकि यह खराब व्यवहार को सुदृढ़ न करे। मैं बस इस बिंदु पर उस हिस्से को हटा दूंगा, आप सही कह रहे हैं, हमें उस आदेश की आवश्यकता नहीं है जो कहीं और से प्लास्टर किया गया हो।
अली रज़ेगी

5

डेटाबेस का आकार फ़ाइल का आकार है। डेटा फ़ाइल के वास्तविक आकार को देखें (लेन-देन लॉग की गणना नहीं होती है)। हां इंडेक्स की गिनती। यदि आप अंतरिक्ष से बाहर चल रहे हैं, तो SQL 2012 एक्सप्रेस में अपग्रेड पर विचार करें क्योंकि आकार सीमा 10 Gigs तक बढ़ जाती है।


6
SQL Server 2008 R2 एक्सप्रेस में भी 10 जीबी की सीमा है (पूर्णता के लिए)
marc_s

1

जब sp_spaceused आपके पहले परिणाम सेट में लगभग 25 GB का डेटाबेस_ दिखाता है, जिसमें डेटा फ़ाइल / इंडेक्स और लेनदेन लॉग शामिल होता है। केवल वास्तविक डेटा और इंडेक्स एसक्यूएल सर्वर एक्सप्रेस सीमा की ओर गिनती करते हैं, इसलिए आपके पास लगभग 3.3 जीबी डेटा (जैसा कि आपके दूसरे परिणाम सेट में है) और शेष 22 जीबी लेनदेन लॉग होगा। यदि आप "sp_helpdb" चलाते हैं, तो यह वास्तविक चित्र दिखाता है, क्योंकि यह दो अलग-अलग पंक्तियों पर डेटा उपयोग और लेनदेन लॉग उपयोग की रिपोर्ट करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.