यदि आप अपने डेटाबेस को प्रबंधित करने के लिए SSMS जैसे GUI टूल का उपयोग कर रहे हैं, तो आप GUI के माध्यम से अपना रास्ता क्लिक करके आसानी से अपने डेटाबेस के आकार की जांच कर सकते हैं (डेटाबेस पर राइट-क्लिक करें, रिपोर्ट इंगित करें) , फिर मानक रिपोर्ट, और फिर डिस्क उपयोग . क्लिक करें )।
हालाँकि, यदि आप अपने डेटाबेस को प्रबंधित करने के लिए T-SQL का उपयोग करना पसंद करते हैं, तो आपको एक क्वेरी चलाने की आवश्यकता होगी जो यह जानकारी लौटाती है।
यह आलेख T-SQL का उपयोग करके SQL सर्वर डेटाबेस के आकार की जाँच करने के छह तरीके प्रस्तुत करता है।
sp_spaceuseed Stored प्रक्रिया
यह एक सिस्टम संग्रहीत प्रक्रिया है जो वर्तमान डेटाबेस में पंक्तियों की संख्या, डिस्क स्थान आरक्षित, और तालिका द्वारा उपयोग किए गए डिस्क स्थान, अनुक्रमित दृश्य, या सेवा ब्रोकर कतार को प्रदर्शित करता है, या पूरे डेटाबेस द्वारा आरक्षित और उपयोग किए गए डिस्क स्थान को प्रदर्शित करता है।
इसका उपयोग करने के लिए, बस संबंधित डेटाबेस पर स्विच करें और प्रक्रिया को निष्पादित करें। इस तरह:
USE WideWorldImporters; EXEC sp_spaceused;
परिणाम:
database_name database_size unallocated space ------------------ ------------- ----------------- WideWorldImporters 3172.00 MB 2511.76 MB 1 row(s) returned reserved data index_size unused --------- --------- ---------- ------- 573688 KB 461728 KB 104120 KB 7840 KB 1 row(s) returned
यह दो परिणाम सेट देता है जो प्रासंगिक जानकारी प्रदान करते हैं।
आप डेटाबेस के भीतर किसी विशिष्ट ऑब्जेक्ट पर डेटा वापस करने के लिए ऑब्जेक्ट नाम भी प्रदान कर सकते हैं। इस मामले में, केवल एक परिणाम सेट लौटाया जाएगा।
उदाहरण:
USE WideWorldImporters; EXEC sp_spaceused N'Application.Cities';
परिणाम:
name rows reserved data index_size unused ------ -------------------- -------- ------- ---------- ------ Cities 37940 4880 KB 3960 KB 896 KB 24 KB
इस उदाहरण में हम Cities
. के बारे में जानकारी लौटाते हैं केवल तालिका।
sp_helpdb संग्रहित प्रक्रिया
एक अन्य सिस्टम संग्रहीत कार्यविधि है sp_helpdb
।
यहां कॉल करने का एक उदाहरण दिया गया है:
EXEC sp_helpdb N'WideWorldImporters';
परिणाम:
name fileid filename filegroup size maxsize growth usage ------------ ------ ---------------- --------- ---------- ------------- -------- --------- WWI_Primary 1 /data/WWI.mdf PRIMARY 1048576 KB Unlimited 65536 KB data only WWI_Log 2 /data/WWI.ldf null 102400 KB 2147483648 KB 65536 KB log only WWI_UserData 3 /data/WWI_UD.ndf USERDATA 2097152 KB Unlimited 65536 KB data only
इस मामले में, हम डेटाबेस के नाम को एक तर्क के रूप में पास करते हैं। हम sp_helpdb
. पर भी कॉल कर सकते हैं बिना तर्क दिए। अगर हम ऐसा करते हैं, तो यह sys.databases
में सभी डेटाबेस की जानकारी लौटाएगा कैटलॉग व्यू।
sp_databases संग्रहित प्रक्रिया
एक अन्य विकल्प है sp_databases
सिस्टम संग्रहीत प्रक्रिया। यह संग्रहीत कार्यविधि उन डेटाबेसों को सूचीबद्ध करती है जो या तो SQL सर्वर की आवृत्ति में रहते हैं या डेटाबेस गेटवे के माध्यम से पहुँच योग्य हैं।
इसे निष्पादित करने का तरीका यहां दिया गया है:
EXEC sp_databases;
परिणाम:
DATABASE_NAME DATABASE_SIZE REMARKS ------------------ ------------- ------- master 6848 null model 16384 null msdb 15616 null Music 16384 null Nature 16384 null Solutions 47104 null tempdb 16384 null Test 16384 null WideWorldImporters 3248128 null world 16384 null WorldData 16384 null
sys.master_files देखें
उपरोक्त संग्रहीत कार्यविधि sys.master_files
. से पूछताछ करती है दृश्य। तो एक विकल्प यह है कि सीधे दृश्य पर जाएं और चेरी अपने कॉलम चुनें:
SELECT name, size, size * 8/1024 'Size (MB)', max_size FROM sys.master_files WHERE DB_NAME(database_id) = 'WideWorldImporters';
परिणाम:
name size Size (MB) max_size ------------ ------ --------- --------- WWI_Primary 131072 1024 -1 WWI_Log 12800 100 268435456 WWI_UserData 262144 2048 -1
इस मामले में हम प्रत्येक डेटा फ़ाइल और लॉग फ़ाइल का आकार देख सकते हैं, क्योंकि वे अलग से सूचीबद्ध हैं। आप यह भी देखेंगे कि मैं size
. पर गणना करता हूं मान को मेगाबाइट (एमबी) में बदलने के लिए कॉलम।
sys.database_files देखें
एक सिस्टम दृश्य भी होता है जिसे sys.database_files
. कहा जाता है . हम पिछले उदाहरण के समान जानकारी वापस करने के लिए इस दृश्य का उपयोग कर सकते हैं:
USE WideWorldImporters; SELECT name, size, size * 8/1024 'Size (MB)', max_size FROM sys.database_files;
परिणाम:
name size Size (MB) max_size ------------ ------ --------- --------- WWI_Primary 131072 1024 -1 WWI_Log 12800 100 268435456 WWI_UserData 262144 2048 -1
विंडो फ़ंक्शन का उपयोग करें
पिछले दो उदाहरणों के साथ एक संभावित समस्या यह है कि वे प्रत्येक फ़ाइल के आकार को अलग-अलग सूचीबद्ध करते हैं। आप जो हासिल करना चाहते हैं उसके आधार पर इसे सकारात्मक या नकारात्मक के रूप में देखा जा सकता है।
यह भी तर्क दिया जा सकता है कि इस पृष्ठ पर पहले तीन समाधान समस्याग्रस्त हैं, क्योंकि वे केवल सभी फाइलों का कुल योग प्रदान करते हैं - वे प्रत्येक व्यक्तिगत फ़ाइल को उसके आकार के साथ सूचीबद्ध नहीं करते हैं।
तो क्या हुआ अगर आप प्रत्येक व्यक्तिगत फ़ाइल के आकार, और . दोनों को देखना चाहते हैं प्रत्येक डेटाबेस के लिए कुल फ़ाइलें?
आप OVER
. का उपयोग कर सकते हैं ऐसा करने के लिए खंड।
यहां एक उदाहरण दिया गया है:
SELECT d.name AS 'Database', m.name AS 'File', m.size, m.size * 8/1024 'Size (MB)', SUM(m.size * 8/1024) OVER (PARTITION BY d.name) AS 'Database Total', m.max_size FROM sys.master_files m INNER JOIN sys.databases d ON d.database_id = m.database_id;
परिणाम:
Database File Size (MB) Database Total ------------------ --------------- --------- -------------- master master 4 6 master mastlog 2 6 model modeldev 8 16 model modellog 8 16 msdb MSDBData 14 14 msdb MSDBLog 0 14 Music Music 8 16 Music Music_log 8 16 Nature Nature 8 16 Nature Nature_log 8 16 Solutions Solutions 8 46 Solutions Solutions_log 8 46 Solutions Solutions_dat_2 10 46 Solutions Solutions_dat_3 10 46 Solutions Solutions_log_2 10 46 tempdb tempdev 8 16 tempdb templog 8 16 WideWorldImporters WWI_Primary 1024 3172 WideWorldImporters WWI_Log 100 3172 WideWorldImporters WWI_UserData 2048 3172 world world 8 16 world world_log 8 16
यह प्रत्येक डेटाबेस, प्रत्येक डेटाबेस के लिए फ़ाइलें, प्रत्येक फ़ाइल के लिए फ़ाइल आकार, साथ ही प्रत्येक डेटाबेस के लिए सभी फ़ाइलों की कुल सूची को सूचीबद्ध करता है। इसके लिए आवश्यक है कि प्रत्येक डेटाबेस (और उनका कुल आकार) कई बार (प्रत्येक फ़ाइल के लिए एक बार) सूचीबद्ध हो।