SQL सर्वर पुनर्स्थापना त्रुटि - पहुँच अस्वीकृत है


167

मैंने अपनी स्थानीय मशीन पर एक डेटाबेस बनाया और फिर tables.bakटेबल नामक एक बैकअप बनाया DataLabTables

मैंने उस टेबल के बिना एक रिमोट मशीन में उस बैकअप को स्थानांतरित किया और एक पुनर्स्थापना करने की कोशिश की, लेकिन निम्नलिखित त्रुटि प्राप्त की:

System.Data.SqlClient.SqlError: ऑपरेटिंग सिस्टम ने 'RestoreContainer :: ValidateTargetForCreation' को 'c:' प्रोग्राम: \ Program Files \ Microsoft SQL Server \ MSSQL.1 \ MSSQL \ DataLabTables पर पुन: प्रयास करने के कारण त्रुटि '5 (प्रवेश निषेध है।)' को लौटा दिया। .mdf '।

मैं अपने अधिकारों को कैसे तय करूं, अगर यह समस्या है?

जवाबों:


539

मेरे पास सिर्फ SQL सर्वर 2012 के साथ यह समस्या है।

यह पता चला है कि मुझे जो करना था वह 'फाइल' सेक्शन पर 'सभी फाइलों को फ़ोल्डर में स्थानांतरित करें' चिह्नित बॉक्स पर टिक करना था:

यहां छवि विवरण दर्ज करें

(छवि पूर्ण आकार देखने के लिए क्लिक करें)

यह निश्चित रूप से मानता है कि आपके पास SQL ​​सर्वर का सही संस्करण स्थापित है।


13
मेरे लिए भी काम किया। क्या कोई समझा सकता है क्यों ?
मैग्नेटिक

3
क्या आप यह भी बता सकते हैं कि यूआई के बजाय स्क्रिप्ट के माध्यम से यह कैसे किया जा सकता है?
FMFF

9
मैं 2014 के साथ यह समस्या थी, एक ही तय है।
डेनएडव सिप

3
SQL Express से बैकअप लेने और पूर्ण SQL सर्वर पर पुनर्स्थापित करने पर मेरे लिए भी यही समाधान था
tarrball

10
मैं तुम्हें एक गले लगाने की जरूरत है। अब गंभीरता से, मैं एक ग्राहक के लिए नहीं कहने वाला था, आपके जवाब ने मेरी परियोजना को बचा लिया।
मार्को स्कैबियोलो

30

त्रुटि संदेश से, यह कहता है कि आपके पुनर्स्थापना ऑपरेशन के लक्ष्य ( c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DataLabTables.mdf) को मान्य करते समय एक त्रुटि है ।

ऐसा प्रतीत होता है:

a) वह फ़ाइल पहले से मौजूद है (क्योंकि आपने इसे पहले ही पुनर्स्थापित कर लिया है) और SQL सर्वर द्वारा उपयोग में है

या

ख) वह निर्देशिका बिल्कुल मौजूद नहीं है

आपके प्रश्न में, आपने उल्लेख किया है कि आपने उस तालिका के लिए एक बैकअप बनाया है - यह नहीं है कि SQL सर्वर बैकअप कैसे काम करता है। वे बैकअप हमेशा पूरे डेटाबेस (या उस डेटाबेस से कम से कम एक या कई फ़ाइल समूह) होते हैं।

मेरा कूबड़ है: आपने पहले से ही उस डेटाबेस को पहले से ही बहाल कर लिया है, और अब, दूसरे पुनर्स्थापना पर, आपने अपने पुनर्स्थापना विज़ार्ड में "मौजूदा डेटाबेस को अधिलेखित" चेकबॉक्स की जांच नहीं की है - इस प्रकार मौजूदा फ़ाइल को अधिलेखित नहीं किया जा सकता है और पुनर्स्थापना विफल हो जाती है।

आपके दूरस्थ सर्वर पर पुनर्स्थापना चलाने वाले उपयोगकर्ता को स्पष्ट रूप से दूरस्थ सर्वर पर उस निर्देशिका तक पहुंच प्राप्त नहीं होती है।

C:\program files\.... एक संरक्षित निर्देशिका है - सामान्य (गैर-व्यवस्थापक) उपयोगकर्ताओं के पास इस निर्देशिका (और इसके उपनिर्देशिका) तक पहुंच नहीं है।

सबसे आसान समाधान: अपनी BAK फाइल को कहीं और लगाने (जैसे C:\temp) का प्रयास करें और इसे वहां से पुनर्स्थापित करें


मैंने C: \ temp के तहत कोशिश की, लेकिन त्रुटि अभी भी ऊपर के समान है, उसी पथ के साथ जैसा कि मैंने पहली बार उल्लेख किया है जो अजीब है
cdub

मैं SQL प्रबंधन स्टूडियो में डेटाबेस पर राइट क्लिक करता हूं, फिर कार्य -> ​​पुनर्स्थापना
cdub

1
@marc_s thx, मैं विकल्पों को संपादित करना भूल गया क्योंकि उस फ़ाइल के लिए कोई निर्देशिका नहीं है ... इसके नहीं ... MSSQL \ DataLabTables.mdf लेकिन इसके बजाय ... MSSQL \ Data \ DataLabTables.mdf
सीडीआर

2
@marc_s: माइनर टिप्पणी "और SQL सर्वर द्वारा उपयोग में है" विकल्प का एक भाग ऊपर सूचीबद्ध है: RESTOREयदि फ़ाइल मौजूद है, तो भी मानक कमांड विफल हो जाती है, भले ही वह SQL सर्वर द्वारा उपयोग में हो (जैसे कि MDF /) LDF फाइलें पिछले डिटैच होने के बाद भी बनी रहती हैं)। मैं इस कस्टम टी-एसक्यूएल-आधारित लॉग-शिपिंग कार्यान्वयन में पिछले कुछ हफ्तों में सैकड़ों डीबी के एक प्रमुख प्रवास के लिए आया था। मुझे यकीन नहीं है कि त्रुटि संदेश "एक्सेस अस्वीकृत" था, शायद कुछ कम विशिष्ट था।
ताओ

2
इससे पहले कि मैं एक बैकअप के माध्यम से बहाल कर सकता था 'ओवरराइट' की जाँच करने के लिए पर्याप्त नहीं था, मुझे मैन्युअल रूप से मौजूदा एमडीएफ / एलडीएफ फ़ाइलों का नाम बदलना पड़ा।
जेमी कीलिंग

26

मुझे भी यही समस्या आ रही थी। यह पता चला है कि मेरी SQL Serverऔर SQL Server Agentसेवाएँ logon asउस Network Servicesखाते के तहत चल रही थीं, जिसमें बैक अप की पुनर्स्थापना करने के लिए पहुंच नहीं थी।

मैंने इन दोनों सेवाओं को लॉगऑन के रूप में बदल दिया Local System Accountऔर इस समस्या को ठीक कर दिया।


यह एक अच्छा विचार नहीं है। यह वास्तविक समस्या का सामना करता है जो कि वह फ़ाइल स्थान है जिसे आप पुनर्स्थापित करने का प्रयास कर रहे हैं वह वह नहीं है जो आप चाहते हैं।
घोषित

2
मेरी SQL सर्वर सेवा "NT Service \ MSSQLSERVER" पर चल रही थी, जो इस उपयोगकर्ता के डेटा और लॉग फ़ोल्डर के लिए अनुमतियाँ मेरे लिए काम कर रही थी।
टिम न्यूटन

ठीक है, इसने मेरी मदद की
अलकासी झुकाउ

9

हाल ही में मैंने SQL 2008 R2 के साथ इस समस्या का सामना किया और नीचे दिए गए समाधान ने मेरे लिए काम किया:

1) एक ही नाम के साथ एक नया डेटाबेस बनाएं जिसे आप 2 को पुनर्स्थापित करने का प्रयास कर रहे हैं) पुनर्स्थापित करते समय, उसी नाम का उपयोग करें जिसका आपने ऊपर उपयोग किया था और विकल्पों में, ओवरराइट विकल्प पर क्लिक करें।

यदि अन्य समाधान काम नहीं करते हैं तो आप ऊपर एक शॉट दे सकते हैं।


6

बैकअप निर्माता के पास MSSql संस्करण 10 स्थापित था, इसलिए जब उसने बैकअप लिया तो यह मूल फ़ाइल पथ (उसी स्थान पर इसे पुनर्स्थापित करने में सक्षम) भी संग्रहीत करता है, लेकिन मेरे पास संस्करण 11 था, इसलिए यह गंतव्य निर्देशिका नहीं ढूँढ सका।

इसलिए मैंने आउटपुट फ़ाइल निर्देशिका को C: \ Program Files \ Microsoft SQL Server \ MSSQL11.MSSQLSERVER \ MSSQL \ DATA \ में बदल दिया, और यह डेटाबेस को सफलतापूर्वक पुनर्स्थापित करने में सक्षम था।

स्रोत


6

मुझे भी ऐसी ही समस्या का समाधान करना पड़ा था। मैंने 2005 की .bak फ़ाइल को पुनर्स्थापित करने की कोशिश की, और मुझे बिल्कुल वही त्रुटि मिली। मैंने ओवरराइट विकल्प का चयन किया और कोई फायदा नहीं हुआ।

मेरा समाधान फ़ोल्डर में जाकर और संपत्ति स्क्रीन के माध्यम से एक्सेस अधिकारों को संपादित करके SQL उपयोगकर्ता को प्रश्न में निर्देशिका तक पहुंच प्रदान करना था।


2

इस समस्या के लिए भी कुछ घंटे खो दिया। हालांकि यह हो रहा है:

मेरे मामले में "एक्सेस अस्वीकृत" का वास्तव में मतलब था "एक्सेस अस्वीकृत"। मेरे विंडोज डिवाइस पर mssqlstudio के उपयोगकर्ता खाते में त्रुटि संदेश में निर्दिष्ट फ़ोल्डर का पूर्ण नियंत्रण नहीं था। मैंने इसे पूरा नियंत्रण दिया। पहुँच को अब अस्वीकार नहीं किया गया था और पुनर्स्थापना सफल रही।

स्टूडियो के लिए फ़ोल्डर को बंद क्यों किया गया? कौन जानता है ? मुझे इससे निपटने के लिए पर्याप्त प्रश्न मिले क्योंकि यह अधिक जवाब देने की कोशिश किए बिना है।


1

मेरे पास यह मुद्दा था, मैंने प्रशासक के रूप में लॉग इन किया और इस मुद्दे को तय किया।


मेरे लिए और साथ ही SSMS v17 के लिए काम किया
नंदोलक्स

0

एक और परिदृश्य कई डेटाबेस पथों का अस्तित्व हो सकता है। सबसे पहले, उस पथ पर ध्यान दें जहाँ वर्तमान में नए डेटाबेस संग्रहीत किए जा रहे हैं। इसलिए यदि आप एक नया खाली डेटाबेस बनाते हैं और फिर करते हैं Tasks/Restore, तो सुनिश्चित करें कि जिस पथ का उपयोग करने का प्रयास कर रहा है वह वही निर्देशिका है जिसे खाली डेटाबेस में बनाया गया था। भले ही पुनर्स्थापना पथ कानूनी हो, फिर भी आपको पहुँच अस्वीकृत मिलेगी। त्रुटि यदि यह वर्तमान पथ नहीं है जिसके साथ आप काम कर रहे हैं। जब रास्ता कानूनी नहीं है, तो बहुत आसान है कि रास्ता कानूनी हो, लेकिन वर्तमान रास्ता नहीं।


0

क्षमा करें क्योंकि मैं टिप्पणी नहीं कर सकता ...

मुझे भी यही समस्या थी। मेरे मामले में समस्या एक पुराने sql सर्वर फ़ोल्डर (जो सर्वर पर मौजूद थी) को पुनर्स्थापित करने की कोशिश करने से संबंधित थी। यह पुराने sql सर्वर बैकअप (यानी SQL Server 2012 बैकअप) के कारण एक नए sql सर्वर (SQL Server 2014) में बहाल है। असली मुद्दा @marc_s उत्तर से बहुत अलग नहीं है। वैसे भी, मैंने केवल लक्ष्य फ़ोल्डर को नए SQL सर्वर डेटा फ़ोल्डर में बदल दिया है।


0

यह सबसे अच्छा समाधान नहीं हो सकता है, लेकिन मैं SQL Server 2005 में पुनर्स्थापना करने की कोशिश कर रहा था, लेकिन मैं SQL Server 2008 में बदल गया और यह काम किया।



0

Frnds ... डेटाबेस को प्रतिबंधित करते समय मेरे पास एक ही मुद्दा था और हर समाधान की कोशिश की, लेकिन एनटी को हल नहीं किया जा सका। तब मैंने SQL 2005 को स्थापित करने की कोशिश की और समस्या हल हो गई। Actully पिछली बार मैं SQL को टालते समय कस्टमाइज़्ड ऑप्शन पर चेक करना भूल गया था। यह इंस्टॉल करते समय दो बार आता है और मैं इसे केवल लोगों के लिए चेक करता हूँ ..


0

मेरे मामले में - मुझे उस डेटाबेस के बैकअप पथ को दोबारा जांचना था जहां से मैं पुनर्स्थापित कर रहा था। जब मैंने पहली बार ऐसा किया था तो मैंने पहले इसे एक अलग रास्ते से बहाल किया था। मैंने पहली बार उपयोग किए गए बैकअप पथ का उपयोग करने के लिए बैकअप पथ तय किया और यह काम किया!


0

मैंने डेटा और लॉग्स के लिए नए फ़ोल्डर बनाना समाप्त कर दिया है और यह ठीक से काम करता है, एक फ़ोल्डर / फ़ाइल अनुमति समस्या होनी चाहिए।


0

यह तब भी होता है जब पथ सही होते हैं, लेकिन सेवा खाता डेटा फ़ाइलों का स्वामी नहीं होता है (फिर भी इसे पढ़ने / लिखने के लिए पर्याप्त अधिकार हैं)। यह तब हो सकता है यदि फ़ाइलों की अनुमतियों को फ़ोल्डर की अनुमतियों से मेल खाने के लिए रीसेट किया गया था (बेशक, जबकि सेवा बंद कर दी गई थी)।

इस मामले में सबसे आसान समाधान प्रत्येक डेटाबेस को अलग करना है और इसे फिर से संलग्न करना है (क्योंकि जब मालिक को संलग्न करना सेवा खाता माना जाता है)।


-1

इसे इस्तेमाल करे:

पुनर्स्थापना DB विज़ार्ड विंडो में, फ़ाइलें टैब पर जाएं, "सभी फ़ाइलों को फ़ोल्डर में स्थानांतरित करें" चेक बॉक्स को अनचेक करें फिर सी से पुनर्स्थापना गंतव्य को बदलें: किसी अन्य ड्राइव पर। फिर नियमित पुनर्स्थापना प्रक्रिया के साथ आगे बढ़ें। यह सफलतापूर्वक बहाल हो जाएगा।


-1

मुझे भी यही समस्या थी लेकिन मैंने sql Server 2008 r2 का उपयोग किया था, आपको विकल्पों में जाँच करनी चाहिए और उन रास्तों को सत्यापित करना चाहिए जहाँ sql फ़ाइलों को सहेजने जा रहा है। mdf और .ldf आपको अपने sql सर्वर इंस्टॉलेशन के पथ का चयन करना होगा। मैंने इसके साथ अपनी समस्या को हल किया, मुझे आशा है कि यह आपकी मदद करेगा।


-2

फिर इसे C :, के तहत उप फ़ोल्डर में ले जाने का प्रयास करें, लेकिन सत्यापित करें कि उपयोगकर्ता को आपके उपयोग के फ़ोल्डर पर पूर्ण अधिकार हैं।

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