SQL सर्वर ऑपरेटिंग सिस्टम त्रुटि 5: "5 (प्रवेश निषेध है।)"


153

मैं एसक्यूएल सीखना शुरू कर रहा हूं और मेरे पास एक पुस्तक है जो काम करने के लिए एक डेटाबेस प्रदान करती है। नीचे ये फाइलें निर्देशिका में हैं, लेकिन समस्या यह है कि जब मैं क्वेरी चलाता हूं, तो यह मुझे यह त्रुटि देता है:

Msg 5120, लेवल 16, स्टेट 101, लाइन 1 भौतिक फ़ाइल "C: \ Murach \ SQL Server 2008 \ Dat डेटाबेस \ AP.mdf" को खोलने में असमर्थ। ऑपरेटिंग सिस्टम त्रुटि 5: "5 (प्रवेश निषेध है।)"।

   CREATE DATABASE AP
      ON PRIMARY (FILENAME = 'C:\Murach\SQL Server 2008\Databases\AP.mdf')
      LOG ON (FILENAME =     'C:\Murach\SQL Server 2008\Databases\AP_log.ldf')
      FOR ATTACH
    GO

पुस्तक में लेखक कहता है कि इसे काम करना चाहिए, लेकिन यह मेरे मामले में काम नहीं कर रहा है। मैंने खोज की लेकिन मुझे नहीं पता कि समस्या क्या है, इसलिए मैंने यह प्रश्न पोस्ट किया।


बैकअप फ़ाइल पहले से ही मौजूद है, तो यकीन है कि यह है कि सुनिश्चित करें नहीं लगता है कि सेवा लिखने की अनुमति है बनाने के अलावा, "केवल पढ़ने के लिए" विशेषता है।
जंमोज़ोज़ि

जवाबों:


133

SQL सर्वर डेटाबेस इंजन सेवा खाते में नए फ़ोल्डर में पढ़ने / लिखने की अनुमति होनी चाहिए।

की जाँच करें इस

ठीक करने के लिए, मैंने निम्नलिखित कार्य किया:

डेटा फ़ाइल (S :) और लॉग फ़ाइल (T :) के लिए पूर्ण नियंत्रण के साथ फ़ाइल सुरक्षा अनुमतियों के लिए व्यवस्थापक समूह को जोड़ा गया।

डेटाबेस संलग्न और यह ठीक काम करता है।

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

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


4
कभी-कभी SQL सर्वर एक अलग उपयोगकर्ता समूह के अलावा Administrators Group
चलेगा

57
इसके अलावा, यह SQL सर्वर प्रबंधन स्टूडियो को व्यवस्थापक के रूप में शुरू करने में मदद कर सकता है, न कि केवल सर्वर सेवा।
david.barkhuizen

1
मेरे लिए निम्न लिंक में समाधान काम किया: stackoverflow.com/a/19061137/365188
Ozair Kafray

3
मेरे लिए SQL सर्वर एजेंट सेवा खाते को स्थानीय सिस्टम में बदलने से काम हुआ।
सिंघम sing००

22
यदि आपका SQL सर्वर आवृत्ति किसी सेवा खाते (उदाहरण के लिए, मेरा है MSSQL$SQLEXPRESS) के तहत चल रहा है , तो यह स्पष्ट नहीं हो सकता है कि आपको फ़ोल्डर अनुमतियों की सूची में इस खाते को जोड़ने की आवश्यकता है:NT Service\MSSQL$SQLEXPRESS
ब्रायन लैसी

109

एक पुरानी पोस्ट, लेकिन यहां एक कदम से कदम है जो विंडोज 7 के तहत चल रहे SQL Server 2014 के लिए काम करता है:

  • नियंत्रण कक्ष ->
  • प्रणाली और सुरक्षा ->
  • प्रशासनिक उपकरण ->
  • सेवाएं ->
  • डबल क्लिक SQL सर्वर (SQLEXPRESS) -> राइट क्लिक, गुण
  • लॉग ऑन टैब चुनें
  • "स्थानीय सिस्टम खाता" चुनें (डिफ़ॉल्ट कुछ obtuse विंडोज सिस्टम खाता था)
  • -> ठीक है
  • राइट क्लिक, स्टॉप
  • राइट क्लिक करें, प्रारंभ करें

Voilá!

मुझे लगता है कि इंस्टॉलेशन में लॉगऑन अकाउंट सेट करना एक विकल्प हो सकता है, लेकिन अगर ऐसा डिफ़ॉल्ट नहीं था, और अगर आपको इस मुद्दे के बारे में पहले से जानकारी नहीं थी तो मिस करना आसान था।


5
मैंने बहुत सारे विकल्प बाउट की कोशिश की है लेकिन आपका जवाब ठीक है। धन्यवाद mickeyf
विक्की

2
SQL सर्वर 2014 के लिए विन 10 के तहत भी काम करता है। धन्यवाद।
जोहान फोली

7
-1 ऐसा करना इस उपयोगकर्ता को पहले स्थान पर स्थापित करने के पूरे विचार के खिलाफ जाता है। यह एक सुरक्षा विशेषता है, और यह इसे परिधि में रखता है।
NullUserException

2
वाह .. कैंट का मानना ​​है कि लोग इस "उत्तर" में कूद गए .. यह एक बड़ा सुरक्षा मुद्दा बना सकता है .. अन्यथा, उस उपयोगकर्ता को पहले सेट करने का कोई कारण नहीं होगा, है ना? वैसे भी, यह उन लोगों के लिए एक "समाधान" है जो अपने मामलों में इसे सुरक्षा मुद्दा नहीं मानते हैं।
जिज्ञासु बोय

2
जो कोई भी सोचता है कि सुरक्षा कुछ काम करने से ज्यादा महत्वपूर्ण है, बस अपने SQL सर्वर को बंद कर सकते हैं!
इवान

44

प्रवेश निषेध मुद्दे के आसपास जाने के लिए, मैंने एसएसएमएस को प्रशासक के रूप में शुरू किया और उसने मुझे अपने स्थानीय ड्राइव से डेटाबेस संलग्न करने की अनुमति दी। डेटाबेस को किसी अन्य SQL और विंडो इंस्टेंस में बनाया गया था।


3
यह मेरे लिए था ... मैं बस एक पूरी तरह से स्थानीय सेटअप देख रहा हूं और यह समस्या विंडोज 10 होम पर मिली है, और इससे पहले मैंने एक और कारण से खुद को mdf और ldf "मालिक" बनाया था - शायद प्रासंगिक
माइक एम

3
यह मेरे लिए भी काम करता है। मैं विंडोज 10 और माइक्रोसॉफ्ट एसक्यूएल सर्वर 2012 का उपयोग कर रहा हूं। मैंने प्रशासक के रूप में एसक्यूएल प्रबंधन स्टूडियो को चलाया है और फिर एडवेंचर वर्क सैंपल डेटाबेस को संलग्न करने में सक्षम है।
अरशो

1
कार्य डोमेन वातावरण में चलने पर यह विंडोज 10 प्रो के साथ समस्या को भी हल करता है।
पेरप्लेक्ससिस्टम

समान - डोमेन एनवी, एसएसएमएस 2017.x, विन 10 प्रो। अन्य मशीन से अलग और नई मशीन से जुड़ी।
ट्रैविसडब्लन

44

यह Windows से संबंधित समस्या है जहाँ SQL सर्वर में .bak फ़ाइल और इसलिए इस त्रुटि वाले फ़ोल्डर के लिए उपयुक्त अनुमति नहीं है।

आस-पास का सबसे आसान काम आपकी .bak फ़ाइल को डिफ़ॉल्ट रूप से SQL बैकअप स्थान पर कॉपी करना है जिसमें सभी आवश्यक अनुमतियां हैं। आपको किसी और चीज के साथ फील करने की जरूरत नहीं है। में SQL Server 2012 , इस स्थान है

D:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup (SQL 2012)
C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Backup (SQL 2014)
C:\Program Files\Microsoft SQL Server\MSSQL13.SQLEXPRESS\MSSQL\Backup (SQL 2016)

@AdamLevitt क्या आपके पास SQL ​​के कई संस्करण स्थापित या पहले से स्थापित हैं? क्या आप वाकई इसे सही स्थान पर रख रहे हैं?
हम्माद खान

1
@ ओम, धन्यवाद मैं करता हूं। फिक्स 2012 बैकअप dir में निर्यात करना था।
एडम लेविट

1
यह समाधान SQL Server 2014 में भी काम करता है। पथ C: \ Program Files \ Microsoft SQL Server \ MSSQL12.MSSQLSERVER \ MSSQL \ बैकअप
निक किंग

इसका जवाब होना चाहिए !!
धुरी

मुझे एमएस एसक्यूएल एक्सप्रेस 2016 के साथ एक समान समस्या थी, इसका समाधान मेरी .mdf फ़ाइल को फ़ोल्डर में रखना था: C: \ Program Files \ Microsoft SQL Server \ MSSQL13.SQLEXPRESS \ MSSQL \ Backup
jirikadlec2

14

मुझे यह समस्या थी। व्यवस्थापक के रूप में SQL सर्वर चलाएँ


1
UAC में 'Run as Administrator' के रूप में काम किया। मुझे खाता व्यवस्थापक के रूप में लॉगिन करने की आवश्यकता नहीं थी (हालांकि मैं प्रशासक समूह में हूं)।
माइक चेले जूल

1
हां, वही किया, व्यवस्थापक के रूप में चला और सब ठीक हो गया।
क्लाइड

12

हां, यह सही है। सबसे पहले आपको अपनी सेवा के खाते का पता लगाना चाहिए, आप इसे एक ही समय में ctrl + alt + delete दबाकर टास्क मैनेजर में देख सकते हैं; फिर, आपको "C" का रीड / राइट विशेषाधिकार देना होगा। : सेवा खाते के लिए \ "मुरच \ SQL सर्वर 2008 \ डेटाबेस"।


10

SQL सर्वर के लिए mdf और ldf फ़ाइलों तक पहुँचने के लिए अनुमतियों की कमी के कारण समस्या है। ये सभी प्रक्रियाएँ काम करेंगी:

  1. आप सीधे MSSQLSERVER सेवा स्टार्टअप उपयोगकर्ता खाते को बदल सकते हैं, उपयोगकर्ता खाते के साथ जिनके पास फ़ाइलों पर बेहतर विशेषाधिकार हैं। फिर डेटाबेस संलग्न करने का प्रयास करें।
  2. या आप जाँच किए गए विशेषाधिकारों को पढ़ने और लिखने के साथ mdf & ldf फ़ाइलों के गुणों के सुरक्षा टैब में फ़ाइल को उपयोगकर्ता को सौंप सकते हैं।
  3. विंडोज़ व्यवस्थापक खाते के साथ स्टार्टअप, और व्यवस्थापक विकल्प के रूप में चलाने के साथ SQL सर्वर खोलें और विंडोज़ प्रमाणीकरण के साथ लॉगिन करने का प्रयास करें और अब डेटाबेस संलग्न करने का प्रयास करें।


5

मेरे लिए यह SQL सर्वर प्रबंधन स्टूडियो के साथ निम्न तरीके से हल किया गया था -Log व्यवस्थापक के रूप में (मैंने विंडोज़ प्रमाणीकरण के रूप में लॉग इन किया)-mdf फ़ाइल (राइट क्लिक डेटाबेस संलग्न करें | जोड़ें)। सामान्य उपयोगकर्ता


4

इस बिंदु पर वास्तविक सर्वर अनुमतियाँ मायने नहीं रखेंगी; सब ठीक लग रहा है। SQL सर्वर को स्वयं फ़ोल्डर अनुमतियों की आवश्यकता होती है।
अपने संस्करण के आधार पर, आप अपने फ़ोल्डर को छूने के लिए SERVERNAME $ MSSQLSERVER अनुमतियों को जोड़ सकते हैं। Othewise, यह डिफ़ॉल्ट BACKUP निर्देशिका में होना चाहिए (या तो जहाँ आपने इसे स्थापित किया है या c: \ programfiles (x) \ MSSQL \ BACKUP के लिए डिफ़ॉल्ट है।


2

यदि आप निम्न चरणों का पालन करते हैं तो भी आपको एक ही त्रुटि संदेश मिलता है।

1. login as SA user (SSMS)
2. Edit the file permissions to say "everyone" full access (windows folder)
3. Delete the Log file (Windows Exploring  (this was what I had done per advise from some msdn forum) 

मुझे अभी भी अनुमति त्रुटि मिली है, लेकिन फिर मैंने देखा कि अटैच स्क्रीन में, नीचे खंड STILL ने लॉग फ़ाइल दिखाई, और त्रुटि संदेश वही रहा।

आशा है कि यह मदद करता है जो एक ही बात की थी।


0

बहुत ही सरल उपाय।

  1. सिस्टम व्यवस्थापक के साथ लॉगिन करें
  2. "C: \ Program Files (x86) \ Microsoft SQL Server \ MSSQL11.MSSQLSERVER \ MSSQL \ DATA" में अपने mdf और ldf फ़ाइलों को कॉपी करें जहाँ अन्य सभी डेटा फ़ाइल पुनरावृत्ति करता है।
  3. अब वहाँ से संलग्न करें यह काम करेगा

1
आपको प्रोग्राम फ़ाइल निर्देशिका में डेटा संग्रहीत नहीं करना चाहिए। जब आप SQl सर्वर
OrangeKing89

0

मैंने अपने आवेदन में Entity ढांचे का उपयोग किया और मुझे यह समस्या थी, मैंने फ़ोल्डर्स और विंडोज़ सेवाओं में किसी भी अनुमति को निर्धारित किया और काम नहीं किया, उसके बाद मैं अपना आवेदन प्रशासक के रूप में शुरू करता हूं (exe फ़ाइल में राइट क्लिक करें और "व्यवस्थापक के रूप में चलाएं") का चयन करें और वह काम करता है ठीक।


0

यदि आपको Visual Studio प्रोजेक्ट के लिए फ़ोल्डर .MDFमें फ़ाइल पर यह त्रुटि मिलती है APP_DATA(या जहां आपने कभी इसे रखा है), तो जिस तरह से मैंने किया था, वह केवल मौजूदा DATAफ़ोल्डर से अनुमतियों की प्रतिलिपि बनाने के लिए था (समर्थन के लिए मैं SQL एक्सप्रेस 2014 का उपयोग कर रहा हूं एक पुराना ऐप):

C:\Program Files\Microsoft SQL Server\MSSQL12.SQLEXPRESS2014\MSSQL\DATA

(ध्यान दें: आपका वास्तविक इंस्टॉल पथ मेरे अलग-अलग हैं - खासकर यदि आपका उदाहरण नाम अलग है)

DATAपहले फ़ोल्डर पर डबल क्लिक करें व्यवस्थापक के रूप में सुनिश्चित करें कि आपके पास पहुंच है, फिर फ़ोल्डर पर गुण खोलें और फ़ोल्डर के लिए उसी की नकल करें APP_DATA। मेरे मामले में लापता उपयोगकर्ता था MSSQL$SQLEXPRESS2014(क्योंकि मैंने उदाहरण का नाम दिया है SQLEXPRESS2014- आपका अलग हो सकता है)। SQL सर्वर सेवा उपयोगकर्ता नाम भी होता है।


0

किसी कारण से, सभी सही अनुमतियों को सेट करने से मेरे मामले में मदद नहीं मिली। मेरे पास एक फ़ाइल थी db.bakजिसे मैं 5(Access is denied.)त्रुटि के कारण पुनर्स्थापित नहीं कर पाया । फ़ाइल को कई अन्य बैकअप फ़ाइलों के समान फ़ोल्डर में रखा गया था और सभी अनुमतियाँ अन्य फ़ाइलों के समान थीं । मैं इस db.bakफ़ाइल को छोड़कर अन्य सभी फ़ाइलों को पुनर्स्थापित करने में सक्षम था । मैंने भी उपयोगकर्ता पर SQL सर्वर सेवा लॉग को बदलने की कोशिश की - फिर भी वही परिणाम। मैंने फ़ाइल को बिना किसी प्रभाव के कॉपी करने की कोशिश की है।

तब मैंने केवल निष्पादन करके एक समान फ़ाइल बनाने का प्रयास किया

type db.bak > db2.bak

फाइल कॉपी करने के बजाय। और वोइला यह काम किया! db2.bakसफलतापूर्वक पुनर्स्थापित किया गया।

मुझे संदेह है कि बैकअप फ़ाइल को पढ़ने के साथ कुछ अन्य समस्याओं को 5(Access is denied.)एमएस एसक्यूएल द्वारा बताया जा सकता है ।


0

लिनक्स में, मैं /var/opt/mssql/data/फ़ोल्डर में गया और sudoतब के साथ एक टर्मिनल खोला , मेरी * .mdf और * .ldf फाइल अनुमतियों को बदल दिया जिसमें आप yourDBअपने डेटाबेस फ़ाइल नाम के साथ प्रतिस्थापित करते हैं और myUserवर्तमान में लॉग इन उपयोगकर्ता नाम:

chmod 755 yourDB.mdf
chown myUser yourDB.mdf

chmod 755 yourDB.ldf
chown myUser yourDB.ldf

उसके बाद, इसे बिना किसी मुद्दे के फिर से जोड़ दिया गया।


0

इसका मतलब है कि SSMS लॉगिन उपयोगकर्ता के पास .mdf फ़ाइल पर अनुमति नहीं है। इस तरह से यह मेरे लिए काम किया है:

मैंने SSMS खोला था (व्यवस्थापक के रूप में चलाएँ) और व्यवस्थापक उपयोगकर्ता के रूप में लॉगिन करें, डेटाबेस राइट-क्लिक अटैच करें, क्लिक करें जोड़ें, .mdf फ़ाइल का चयन करें, ठीक क्लिक करें। किया हुआ।

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