यह आलेख
tempdb डेटाबेस उसकी अंतिम कॉन्फ़िगर किए आकार से छोटा आकार करने के लिए सिकोड़ें करने के लिए उपयोग कर सकते हैं तीन विधियों पर चर्चा करता है। पहली विधि आप
tempdb फ़ाइलों के आकार का पूरा नियंत्रण देता है। हालांकि, पहली विधि आप Microsoft SQL Server पुनरारंभ करना आवश्यक है। दूसरी विधि
tempdb डेटाबेस तक छोटा करता है, और SQL सर्वर को पुनरारंभ करना पड़ सकता है। तीसरा विधि आप अलग-अलग फ़ाइलों में
tempdb डेटाबेस सिकोड़ें करने देता है। कोई गतिविधि में
tempdb डेटाबेस shrink प्रक्रिया के दौरान हो सकती कि पिछले दो विधियों की आवश्यकता है।
नोट SQL Server 2005 का उपयोग कर रहे हैं, तो भी आप इन विधियों लागू होते हैं। हालांकि, आप SQL सर्वर प्रबंधन स्टूडियो एंटरप्राइज़ प्रबंधक और क्वेरी विश्लेषक के स्थान पर इन ऑपरेशन के लिए उपयोग करना चाहिए। भी SQL सर्वर प्रबंधन स्टूडियो SQL Server 2005 में
tempdb फ़ाइलों का सही आकार shrink कार्रवाई के बाद नहीं दिखाता है कि अवगत हो। DMV sys.master_files से "वर्तमान स्थान के आबंटन" मान हमेशा कारण निकाल है, और shrink कार्रवाई,
tempdb डेटाबेस के लिए होता है के बाद यह मान अद्यतन नहीं है। Shrink कार्रवाई के बाद
tempdb फ़ाइलों का सही आकार को खोजने के लिए, SQL Server प्रबंधन स्टूडियो में निम्नलिखित कथन निष्पादित:
use tempdb
select (size*8) as FileSizeKB from sys.database_files
नोट SQL Server 2008
tempdb फ़ाइलों का सही आकार shrink कार्रवाई के बाद प्रदर्शित होने समस्या से प्रभावित नहीं है।
Tempdb जानकारी
Tempdb अस्थायी कार्य स्थान है। अन्य उपयोग के बीच SQL सर्वर
tempdb का उपयोग निम्नलिखित के लिए करता:
- स्पष्ट रूप से बनाए गए अस्थायी तालिकाओं का संग्रह
- Worktables संसाधन और सॉर्टिंग क्वेरी के दौरान बनाए गए मध्यवर्ती परिणामों रखें
- Materialized स्थिर कर्सर
SQL सर्वर
tempdb हस्तांतरण लॉग में कोई हस्तांतरण रोलबैक करना, लेकिन फिर से लेन-देन के दौरान डेटाबेस पुनर्प्राप्ति करना नहीं करने के लिए केवल पर्याप्त जानकारी रिकॉर्ड करता है। यह सुविधा सम्मिलित कथनों में
tempdbकी कार्यक्षमता बढ़ाता है। इसके अलावा, यदि आप
tempdb हर बार जब आप SQL Server पुनरारंभ पुन: बनते है क्योंकि कोई हस्तांतरण फिर से करना करने के लिए जानकारी लॉग करने के लिए नहीं है। इसलिए, आगे रोल या रोल बैक के लिए कोई हस्तांतरण है। SQL Server के प्रारंभ होने पर पुन:
tempdb मॉडल डेटाबेस की प्रतिलिपि का उपयोग करके बनते है, और
tempdb अपने अंतिम कॉन्फ़िगर आकार में रीसेट है।
डिफ़ॉल्ट रूप से,
tempdb डेटाबेस autogrow को आवश्यकतानुसार कॉन्फ़िगर है। इसलिए, यह डेटाबेस में समय आकार को इच्छित आकार से बड़ा बढ़ाएँ हो सकता है। SQL सर्वर का एक साधारण पुनरारंभ
tempdb का आकार अपने अंतिम कॉन्फ़िगर आकार में रीसेट करता है। कॉन्फ़िगर आकार फ़ाइल आकार परिवर्तन जैसे परिवर्तन फ़ाइल संशोधित विकल्प या DBCC SHRINKFILE कथन का उपयोग करता है डेटाबेस कार्रवाई का उपयोग करते हुए सेट किया गया था कि अंतिम स्पष्ट आकार है।
Tempdb एक कॉन्फ़िगर किए आकार से छोटा आकार करने के लिए सिकोड़ें करने के लिए आप निम्न तीन विधियाँ उपयोग कर सकते हैं।
विधि 1: उपयोग Transact-SQL आदेश
नोट यह विधि आपको SQL सर्वर को पुनर्प्रारंभ करने की आवश्यकता है।
- SQL सर्वर को रोकने। कमांड प्रॉम्प्ट पर, SQL सर्वर को प्रारंभ करने के लिए निम्न आदेश टाइप करें:
sqlservr - c -f
' -c और -fSQL सर्वर ने कोई tempdb आकार के 1 MB के लिए फ़ाइल डेटा और 0.5 MB लॉग फ़ाइल के लिए कोई न्यूनतम कॉन्फ़िगरेशन मोड में प्रारंभ करने के लिए पैरामीटर्स का कारण।
नोट उल्लेख नामक किसी SQL Server का उपयोग करते हैं, तो आप चाहिए उचित फ़ोल्डर (प्रोग्राम Files\Microsoft SQL Server\MSSQL$ उल्लेख name\Binn) को बदलने और का उपयोग करें -s स्विच (-s % instance_name %)। - क्वेरी विश्लेषक का उपयोग करके SQL सर्वर से कनेक्ट करें, और Transact SQL आदेश चलाएँ:
ALTER DATABASE tempdb MODIFY FILE
(NAME = 'tempdev', SIZE = target_size_in_MB)
--Desired target size for the data file
ALTER DATABASE tempdb MODIFY FILE
(NAME = 'templog', SIZE = target_size_in_MB)
--Desired target size for the log file
- SQL सर्वर को रोकने। ऐसा करने के लिए, कमांड प्रॉम्प्ट विंडो पर Ctrl + C दबाएँ, SQL सर्वर सेवा को पुनरारंभ करें, और Tempdb.mdf और Templog.ldf फ़ाइलों का आकार जाँच।
यह केवल डिफ़ॉल्ट
tempdb तार्किक पर फ़ाइलें प्रणाली कि इस विधि की कमी है:
tempdev और
templog. अधिक फ़ाइलें
tempdbमें जोड़े जाते हैं, तो SQL सर्वर के रूप में एक सेवा पुनरारंभ करने के बाद आप उन्हें सिकोड़ें कर सकते हैं। सभी
tempdb फ़ाइलें स्टार्टअप के दौरान बनते हैं। हालांकि, वे खाली हैं और निकाली जा सकती हैं।
Tempdbमें अतिरिक्त फ़ाइलें निकालने के लिए, फ़ाइल को निकालें विकल्प का उपयोग करते हुए परिवर्तन डेटाबेस आदेश का उपयोग।
विधि 2: DBCC SHRINKDATABASE कमांड का प्रयोग करें
Tempdb डेटाबेस सिकोड़ें करने के लिए DBCC SHRINKDATABASE ' आदेश का उपयोग करें। DBCC SHRINKDATABASE
target_percentपैरामीटर प्राप्त करती है। डेटाबेस shrunk करने के बाद यह डेटाबेस फ़ाइल में बाईं ओर रिक्त स्थान का इच्छित प्रतिशत है। DBCC SHRINKDATABASE का उपयोग करते हैं, तो आप SQL सर्वर को पुनरारंभ करना पड़ सकता है।
महत्वपूर्ण DBCC SHRINKDATABASE चलाते हैं, तो
tempdb डेटाबेस से कोई भी गतिविधि रही कर सकते हैं। सुनिश्चित करें कि DBCC SHRINKDATABASE चलाया जाता है, जबकि अन्य प्रक्रियाओं
tempdb नहीं कर सकता कि का उपयोग करने के लिए, आप एकल उपयोगकर्ता मोड में SQL Server प्रारंभ करना होगा। अधिक जानकारी के लिए, "DBCC SHRINKDATABASE या DBCCSHRINKFILE का निष्पादन समय tempdb का प्रभाव है उपयोग में" खंड देखें।
- वर्तमान में tempdb में sp_spaceused संग्रहीत कार्यविधि के उपयोग के द्वारा प्रयुक्त होने वाले स्थान निर्धारित करते हैं। फिर, एक पैरामीटर के रूप में उपयोग करने के लिए DBCC SHRINKDATABASE के बाकी है मुक्त स्थान का प्रतिशत की गणना। इस परिकलन इच्छित डेटाबेस आकार पर आधारित है।
नोट कुछ मामलों में, आप को निष्पादित करना पड़ सकता है sp_spaceused @ updateusage = true उपयोग किया जाता है वह स्थान फिर से परिकलित करने के लिए और अद्यतन की गई रिपोर्ट प्राप्त करने के लिए। SQL Server पुस्तकें ऑनलाइन करने के लिए sp_spaceused संग्रहीत कार्यविधि के बारे में अधिक जानकारी के लिए देखें।
निम्न उदाहरण पर विचार करें:मान लें कि tempdb ने दो फ़ाइलें: 100 MB और 30 MB लॉग फ़ाइल (Tempdb.ldf) है, जो प्राथमिक डेटा फ़ाइल (Tempdb.mdf)। मान लें 60 MB डेटा प्राथमिक डेटा फ़ाइल है कि वह sp_spaceused बताता है। भी मान लें कि आप प्राथमिक डेटा फ़ाइल पर MB 80 सिकोड़ें करना चाहते हैं। Shrink के बाद इच्छित प्रतिशत बाईं ओर रिक्त स्थान की गणना: 80 MB - 60 MB = 20 MB. अब, भाग 80 MB = 25 से 20 MB प्रतिशत और जो आपके target_percent. हस्तांतरण लॉग फ़ाइल तदनुसार shrunk, छोड़ने 25 प्रतिशत या 20 MB स्थान मुक्त डेटाबेस shrunk करने के बाद।
- क्वेरी विश्लेषक का उपयोग करके SQL सर्वर से कनेक्ट करें, और Transact SQL आदेश चलाएँ:
dbcc shrinkdatabase (tempdb, 'target percent')
-- This command shrinks the tempdb database
Tempdb डेटाबेस पर DBCC SHRINKDATABASE आदेश का उपयोग करने के लिए सीमाएँ हैं। डेटा और लॉग फ़ाइलों के लिए लक्ष्य आकार निर्दिष्ट आकार है जब डेटाबेस बनाए गए या स्पष्ट रूप से फ़ाइल आकार बदलने कार्रवाई जैसे परिवर्तन फ़ाइल संशोधित विकल्प या DBCC SHRINKFILE कमांड का प्रयोग करता है डेटाबेस का उपयोग करते हुए सेट किया गया पिछले आकार छोटा था से छोटे नहीं हो सकता। DBCC SHRINKDATABASE के दूसरे कमी
target_percentage पैरामीटर और उपयोग किया गया है वर्तमान स्थान पर अपनी निर्भरता की गणना है।
3 विधि: DBCC SHRINKFILE ' आदेश का उपयोग करें
अलग-अलग
tempdb फ़ाइलें सिकोड़ें करने के लिए DBCC SHRINKFILE ' आदेश का उपयोग करें। यदि आप इसे एक डेटाबेस फ़ाइल पर ही डेटाबेस से होना अन्य फ़ाइलें प्रभावित किए बिना उपयोग कर सकते हैं क्योंकि DBCC SHRINKFILE DBCC SHRINKDATABASE से अधिक परिवर्तनशीलता प्रदान करता है। DBCC SHRINKFILE
लक्ष्य आकार पैरामीटर प्राप्त होता है, और डेटाबेस फ़ाइल के लिए अंतिम इच्छित आकार है।
महत्वपूर्णTempdb डेटाबेस में कोई क्रिया होती है, जबकि DBCC SHRINKFILE आदेश चलाना चाहिए। सुनिश्चित करें कि DBCC SHRINKFILE को निष्पादित करता है, जबकि अन्य प्रक्रियाओं
tempdb नहीं कर सकता कि का उपयोग करने के लिए, आप एकल उपयोगकर्ता मोड में SQL Server पुनरारंभ करना होगा। DBCC SHRINKFILE के बारे में अधिक जानकारी के लिए, "DBCC SHRINKDATABASE या DBCCSHRINKFILE का निष्पादन समय tempdb का प्रभाव है उपयोग में" खंड देखें।
- प्राथमिक डेटा फ़ाइल (tempdb.mdf), लॉग फ़ाइल (templog.ldf) और tempdbकरने के लिए जोड़ा अतिरिक्त फ़ाइलों के लिए वांछित आकार निर्धारित करते हैं। फ़ाइलों में उपयोग किया गया स्थान से कम या बराबर लक्ष्य इच्छित आकार करने के लिए सुनिश्चित है।
- क्वेरी विश्लेषक का उपयोग करके SQL सर्वर से कनेक्ट करें, और इच्छित सिकोड़ें विशेष डेटाबेस फ़ाइलों के लिए निम्नलिखित Transact SQL आदेश चलाने:
use tempdb
go
dbcc shrinkfile (tempdev, 'target size in MB')
go
-- this command shrinks the primary data file
dbcc shrinkfile (templog, 'target size in MB')
go
-- this command shrinks the log file, examine the last paragraph.
यह फ़ाइल का आकार को अपने मूल आकार से छोटी है एक आकार कम कर सकते हैं कि DBCC SHRINKFILE का एक लाभ है। DBCC SHRINKFILE पर डेटा या लॉग फ़ाइलों के किसी भी समस्या कर सकते हैं। यदि आप डेटाबेस मॉडल डेटाबेस का आकार छोटा बना सकता कि DBCC SHRINKFILE की कमी है।
SQL सर्वर हस्तांतरण लॉग सिकोड़ें 7.0 में स्थगित प्रक्रिया है, और आप एक लॉग truncation और shrink कार्रवाई डेटाबेस में मदद करने के लिए बैकअप समस्या होना चाहिए। डिफ़ॉल्ट रूप से,
tempdbtrunc chkpt पर लॉग विकल्प चालू करने के लिए सेट है। इसलिए, यदि आप उस डेटाबेस के लिए एक लॉग truncation समस्या को नहीं।
डेटाबेस हस्तांतरण लॉग में SQL Server 7.0 सिकोड़ें करने के तरीके के बारे में अधिक जानकारी के लिए, निम्नलिखित आलेख Microsoft ज्ञानकोष में आलेख देखने के लिए क्लिक करें:
256650
(http://support.microsoft.com/kb/256650/EN-US/
)
INF: SQL Server 7.0 हस्तांतरण लॉग सिकोड़ें करने के तरीके
DBCC SHRINKDATABASE या DBCCSHRINKFILE tempdb प्रयोग गरेको बेलामा निष्पादन का प्रभाव
Tempdb किया जा रहा किया जाता, और DBCC SHRINKDATABASE का प्रयोग करके सिकोड़ें करने का प्रयास करें या DBCC SHRINKFILE आदेश, आपको निम्नलिखित जैसा दिख एकाधिक संगतता त्रुटियाँ प्राप्त हो सकते हैं, और shrink कार्रवाई विफल हो सकती है यदि:
सर्वर: संदेश 2501, 16, 1, राज्य स्तर 1 पंक्ति
'1525580473' नामक तालिका नहीं मिल सका। Sysobjects की जाँच करें।
सर्वर: संदेश 8909, स्तर 16, राज्य 1, 0 रेखा
तालिका Corrupt: ऑब्जेक्ट ID 1, 0, अनुक्रमणिका ID पेज ID % S_PGID. PageId पृष्ठ शीर्ष लेख में % S_PGID =।
त्रुटि 2501
tempdbभी दूषण संकेत नहीं हो सकता है, यद्यपि यह त्रुटि shrink कार्रवाई विफल करने के लिए कारण है। त्रुटि 8909
tempdb डेटाबेस में दूषण पर दूसरे हाथ से संकेत पाया। SQL सर्वर
tempdb देना और संगतता त्रुटियों को साफ करने के लिए पुनरारंभ करें। हालांकि, वहाँ हो सकता है कि अन्य भौतिक डेटा दूषित त्रुटियों के कारण त्रुटि 8909, और वे सब-इनपुट/आउटपुट सिस्टम समस्याएँ शामिल like अवगत हो।
संदर्भ
SQL Server पुस्तकें ऑनलाइन; विषय: "DBCC SHRINKFILE"; "DBCC SHRINKDATABASE"