संपत्ति का आकार डेटाबेस के लिए उपलब्ध नहीं है


14

मैंने हाल ही में एक डेटाबेस को उसी आवृत्ति पर पुनर्स्थापित किया था जो इसे (SQL Server 2008 R2 एंटरप्राइज़) से बैकअप दिया गया था और पाया कि मैं डेटाबेस गुणों तक नहीं पहुंच सका।

मैंने निम्नलिखित कार्य किया है:

  • जाँच की डेटाबेस डेटाबेस सही ढंग से उपयोग कर सेट किया गया था sp_helpdb
  • डेटाबेस स्वामी को बदल दिया गया sa। ठीक नहीं है।
  • डेटाबेस मालिक को मेरे sysadminउपयोगकर्ता में वापस बदल दिया । ठीक नहीं है।
  • DBCC updateusageप्रभावित डेटाबेस के खिलाफ जारी । ठीक नहीं है।
  • DBCC CheckDBएक अन्य उदाहरण के लिए एक बहाल प्रति पर चलाएँ । कोई भ्रष्टाचार नहीं मिला। डेटाबेस गुण विंडो तक पहुँचते समय पुनर्स्थापित प्रति (उसी बैकअप फ़ाइल से) ने कोई त्रुटि नहीं की।

क्या कोई मदद कर सकता है?

गुण देखने का प्रयास करने पर मुझे मिलने वाला त्रुटि संदेश है:

अनुरोधित संवाद नहीं दिखा सकता। (SqlMgmt)
संपत्ति का आकार डेटाबेस '[DBNAME]' के लिए उपलब्ध नहीं है।
यह संपत्ति इस ऑब्जेक्ट के लिए मौजूद नहीं हो सकती है, या अपर्याप्त एक्सेस अधिकारों के कारण पुनर्प्राप्ति योग्य नहीं हो सकती है। (Microsoft.SqlServer.Smo)

मैं sysadminइस उदाहरण पर हूं ।

अद्यतन: जैसा कि मैंने सुझाव दिया था कि मैंने एक नया उपयोगकर्ता बनाया है, इसे sysadmin बनाया है और डेटाबेस स्वामी को इसे बदल दिया है। दुर्भाग्य से ठीक नहीं। मैं देखूंगा कि क्या एक प्रोफाइलर ट्रेस पैदावार के लिए कुछ उपयोगी है।

अद्यतन: हारून - मूल डेटाबेस का नाम बदलकर ऑफ़लाइन ले लिया गया था, लेकिन अभी भी वह उदाहरण नहीं है। मूल नाम का उपयोग करके उस डेटाबेस का बैकअप फिर से बहाल कर दिया गया। नई डेटाबेस फ़ाइलों के फ़ाइलनाम मूल से भिन्न होते हैं क्योंकि वे मूल mdf / ldf के समान फ़ोल्डर में रहते हैं। बहाल डीबी वर्तमान में हमारे महत्वपूर्ण ऐप्स को सामान्य रूप से चला रहा है।


@ शैंकी मैं एसएसएमएस 2014 का उपयोग कर रहा हूं और कई क्लाइंट / सर्वर से यह प्रयास कर चुका हूं।
पीटर

शायद डीबी के खिलाफ एक प्रोफाइलर ट्रेस भी चलाएं जहां यह काम करता है और देखें कि वहां भी क्या अलग है जहां यह काम करता है और काम नहीं करता है - कुछ अलग होना चाहिए?
दलाल रस आईटी

मैंने हाल ही में एक बड़े डेटाबेस को पुनर्स्थापित करने के बाद इस मुद्दे को रखा था। मुझे यह कहते हुए खेद है कि यह अपने आप साफ़ हो गया। एक मूर्खतापूर्ण सवाल हो सकता है, लेकिन क्या आपने किसी अनहोनी के लिए त्रुटि जांच की है?
dwjv

जवाबों:


8

मैंने इसे SQL सर्वर सेवा को दुर्भाग्य से / सौभाग्य से पुनः आरंभ करके हल किया है।

मेरा प्रारंभिक विचार डेटाबेस को अलग / संलग्न करना था। ऐसा नहीं है कि मैंने सोचा था कि यह वास्तव में समस्या को ठीक करेगा, मैंने अभी एक मंच में कहीं पढ़ा था। इसका कोई असर नहीं हुआ।

मैं पछतावा नहीं करता था कि पीजे महोनी ने क्या सुझाव दिया था: ट्रेस चलाना। मुझे उम्मीद है कि मैं इस मुद्दे को फिर से देखूंगा ताकि मुझे पता चल सके कि क्या कोई ट्रेस कुछ भी प्रकट करता है। सलाह के लिये धन्यवाद।

कम से कम मेरे अपने प्रश्न का उत्तर देने का मतलब है कि मुझे डेटाबेस के मालिक को बदलने के बारे में एक और सुझाव देखने की ज़रूरत नहीं है; पी

धन्यवाद


5

उत्पादन डेटाबेस की लॉग फ़ाइल की फ़ाइल वृद्धि गुणों को संशोधित करने का प्रयास करते समय मेरे पास यह त्रुटि थी। मैंने SSMS का उपयोग करने की कोशिश की और उसमें भी यही त्रुटि थी:

XXX डेटाबेस के लिए संपत्ति का आकार उपलब्ध नहीं है।

मैंने इसके बजाय डेटाबेस लॉग फ़ाइल को संशोधित करने के लिए टी-एसक्यूएल का उपयोग किया।

USE [master]
GO
ALTER DATABASE [MyDatabase] MODIFY FILE ( NAME = N'MyDatabase_log', FILEGROWTH = 524288KB )
GO

कमांड पूरा होने के बाद मैं SSMS में डेटाबेस प्रॉपर्टीज खोलने में सक्षम था। मुझे उम्मीद है कि यह दूसरों के लिए काम करता है।


दिलचस्प! यहाँ टिप्पणी करें कि क्या आपके लिए काम किया
पीटर

ठीक काम कर रहा है और सही?
कीकनेट

1

यह बहुत व्यस्त डेटाबेस पर हो सकता है या भले ही डेटाबेस सामान्य रूप से व्यस्त न हो, लेकिन फिलहाल यह एक स्टेटमेंट को निष्पादित कर रहा है जो लॉग फाइल के आकार को तेजी से बदल रहा है। उदाहरण के लिए, यदि आप किसी तालिका से बहुत बड़ी संख्या में पंक्तियों (लाखों) को हटाने का प्रयास करते हैं, तो इंजन को रोलबैक उद्देश्यों के लिए प्रत्येक पंक्ति को लॉग करना होगा, जो लॉग फ़ाइल को तेज़ी से बढ़ने के लिए मजबूर करेगा। जब यह प्रगति पर है, यदि आप SSMS में डेटाबेस गुणों को खोलने का प्रयास करते हैं, तो आप त्रुटि संदेश देखेंगे "संपत्ति का आकार उपलब्ध नहीं है।"

इसे पुन: पेश करने का दूसरा तरीका इस प्रकार है: एक बहुत बड़ा डेटाबेस (100+ मिलियन पंक्तियाँ) लें, और उस पर एक ALTER TABLE स्टेटमेंट निष्पादित करें (जैसे एक चार कॉलम को varchar में बदलें)। अपनी लॉग फ़ाइल को प्रति सेकंड megs या यहां तक ​​कि गीगाबाइट के hunderds में देखें। दोबारा, जबकि यह हो रहा है, आप SSMS आपको डेटाबेस का आकार नहीं दे पाएंगे क्योंकि यह सटीक होने के लिए बहुत तेज़ी से बदल रहा है।

कहने की जरूरत नहीं है, कृपया लाइव सर्वर पर यह कोशिश न करें। :)


1

बस इस पर और एक ट्रेस से आया था, जाहिर है यह एक इंडेक्स REBUILD ऑपरेशन द्वारा अवरुद्ध हो गया था जो चल रहा था

मेरी विशिष्ट त्रुटि थी

प्रॉपर्टी SpaceAvailable डेटाबेस '[dbOverwatch]' के लिए उपलब्ध नहीं है। यह संपत्ति इस ऑब्जेक्ट के लिए मौजूद नहीं हो सकती है, या अपर्याप्त एक्सेस अधिकारों के कारण पुनर्प्राप्ति योग्य नहीं हो सकती है। (Microsoft.SqlServer.Smo)

SELECT
(SELECT SUM(CAST(df.size as float)) FROM sys.database_files AS df WHERE df.type in ( 0, 2, 4 ) ) AS [DbSize],
(SUM(a.total_pages) + (SELECT ISNULL(SUM(CAST(df.size as bigint)), 0) FROM sys.database_files AS df WHERE df.type = 2 )) AS [SpaceUsed]
FROM
sys.partitions p join sys.allocation_units a on p.partition_id = a.container_id left join sys.internal_tables it on p.object_id = it.object_id

इसका बहुत कम समय समाप्ति मूल्य होना चाहिए, लेकिन हो सकता है कि आप जाँच सकें कि आपके पास संपत्तियों को एक्सेस करने का प्रयास करते समय कुछ भी अवरुद्ध हो रहा है या नहीं


दिलचस्प। मैं परीक्षण करूँगा।
पीटर

0

डेटाबेस (SQL Server 2008 R2 पर) के विरुद्ध SQL सर्वर डेटाबेस उपकरण समाधान परिनियोजन के दौरान मुझे यह त्रुटि संदेश मिलता है । परिनियोजन समाप्त होने के बाद, त्रुटि चली गई है। यह थोड़ा बुरा है क्योंकि न तो सिंगल यूजर मोड में डीबी है और न ही (कोरस नॉट ऑफ) या किसी और कारण से संकेत मिलता है।

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