मेरे पास बहुत अधिक माध्यमिक डेटा फ़ाइलें (.ndf) के लिए बनाई गई हैं tempdb
। अतिरिक्त फ़ाइलों को निकालने के लिए, मुझे फ़ाइल को खाली करना होगा (सामग्री को अन्य फ़ाइलों में ले जाया जाएगा):
DBCC SHRINKFILE('tempdbfile8', EMPTYFILE);
और फिर फ़ाइल को हटा दें:
ALTER DATABASE tempdb REMOVE FILE tempdbfile8;
लेकिन EMPTYFILE
कमांड त्रुटि लौटाती है:
DBCC SHRINKFILE: Page 8:41920 could not be moved because it is a work table page.
Msg 2555, Level 16, State 1, Line 2
Cannot move all contents of file "tempdbfile8" to other places to complete the emptyfile operation.
चिंता करने की ज़रूरत नहीं है, मुझे बस उस वस्तु का पता लगाने की ज़रूरत है जो इस पृष्ठ का उपयोग इसके बारे में कुछ करने के लिए कर रही है:
DBCC TRACEON (3604)
DBCC PAGE(2,8,41920) --dbid=2, fileid=8, pageid=41920
कमांड बहुत सारी जानकारी देता है, उनमें से object_id। परंतु:
Metadata: ObjectId = 0
मुझे नहीं पता कि इसके बारे में क्या करना है। क्या बिल्ली इस पृष्ठ को ले जाने से रोक रही है? उस वस्तु, प्रक्रिया, सत्र या जो कुछ भी है, उसका पता कैसे लगाएं? किसी भी मदद की सराहना की जाएगी, लेकिन कृपया ध्यान दें कि सब कुछ छोड़ देना जैसा कि वह है या इसके बजाय अन्य फ़ाइल को निकालना इस समस्या का एक वैध समाधान नहीं है।)
संपादित करें:
मैं फ़ाइलों को हटा रहा हूं, क्योंकि हम प्रति प्रोसेसर कोर (एक ही प्रारंभिक आकार, एक ही विकास दर) बनाने के लिए "सर्वोत्तम अभ्यास" का उपयोग करते थे। लेकिन जहां तक मुझे पता है, जब तक आप विवाद की समस्याओं में भाग नहीं लेते हैं, तब तक एक ही डिवाइस पर अतिरिक्त tempdb फाइलें बनाने का कोई मतलब नहीं है। हमारे मामले में यह समझ में आता है, क्योंकि हमारे पास MPIO चालू है, और स्टोरेज डिवाइस 4 रास्तों को संभाल सकता है। लेकिन एक गलती थी, और हमने 6-कोर सीपीयू के साथ कुल 5 फाइलों को समाप्त कर दिया। यह MPIO पथों से अधिक है, CPU कोर से कम है, और यह एक समान संख्या भी नहीं है। यह किसी भी समस्या का कारण नहीं हो सकता है, लेकिन सिर्फ सही नहीं लगता है :)।
मैं आखिरकार डेटाटाउट में से एक को सेट करके सर्वर को पुनरारंभ किए बिना फ़ाइल को खाली करने और निकालने में सक्षम था (कि मुझे समस्या का कारण होने का संदेह था) एकल उपयोगकर्ता मोड (रोलबैक तत्काल)। इसने काम किया, लेकिन मैं भाग्यशाली रही। मैं वास्तव में क्या चाहता हूं, पेज को हमेशा नीचे ट्रैक करने में सक्षम होना चाहिए :)।
dbcc page ( {'dbname' | dbid}, filenum, pagenum [, printopt={0|1|2|3} ])
आपके समाधान के बारे में: यह काम करेगा, लेकिन मैं वास्तव में उदाहरण को नीचे लाए बिना ऐसा करना चाहूंगा।