Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

T-SQL का उपयोग करके SQL सर्वर में डेटाबेस के आकार की जाँच करने के 6 तरीके

यदि आप अपने डेटाबेस को प्रबंधित करने के लिए 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       

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ब्रेंट ओजर SQL सर्वर आंतरिक और बाहरी विखंडन की व्याख्या करता है

  2. टी-एसक्यूएल - निर्धारित करें कि क्या मान पूर्णांक है

  3. SQL सर्वर में UTC मिलीसेकंड को DATETIME में कनवर्ट करें

  4. मौजूदा SQL सर्वर एजेंट जॉब (T-SQL) में जॉब स्टेप जोड़ें

  5. SSMS के लिए शॉर्टकट कैसे बनाएं और डिफ़ॉल्ट SQL सर्वर से स्वचालित रूप से कनेक्ट करें - SQ:सर्वर / TSQL ट्यूटोरियल भाग 4