2012-04-28 17 views
22

मैंने सर्वर पर एक नया उपयोगकर्ता बनाया है जो कुछ डेटाबेस तक पहुंच जाएगा।बैकअप अनुमतियां

C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Backup
Cannot access the specified path or file on the server. Verify that you have the necessary security privileges and that the path or file exists.....................

त्रुटि अपने सिस्टम में किसी भी अन्य पथ के लिए पता चलता है:

लेकिन मैं त्रुटि मिलती है जब मैं बैकअप के लिए जा सकते हैं या डेटाबेस पुनर्स्थापित। यहां तक ​​कि वे लोग जहां उपयोगकर्ता और सेवा खाते में पूर्ण नियंत्रण अनुमतियां होती हैं।

लेकिन अगर मैं पूरा पथ टाइप करता हूं और ठीक क्लिक करता हूं, तो यह शिकायत करता है कि यह प्रदर्शित नहीं हो सकता है, लेकिन यह बैकअप करता है या डेटाबेस को पुनर्स्थापित करता है। बस पथ के लिए पेड़ दृश्य नहीं दिखाता है।

यदि मैं sa खाते का उपयोग करके ऑपरेशन करता हूं, तो संवाद बिना किसी शिकायत के सभी पथ दिखाता है।

पीएस: पहले से ही db_backoperator भूमिका में उपयोगकर्ता जोड़ा गया है।

किस अनुमति की आवश्यकता है?

उत्तर

13

क्या आप SQL प्रमाणीकरण लॉगिन या Windows लॉगिन का उपयोग कर कनेक्ट कर रहे हैं? यदि कोई SQL auth लॉगिन है, तो आप Windows में किसी फ़ोल्डर में उस SQL ​​लॉगिन "पूर्ण नियंत्रण अनुमतियाँ" को कैसे दे रहे हैं? विंडोज़ को आपके द्वारा SQL सर्वर में बनाए गए किसी भी SQL प्रमाणीकरण लॉग इन के बारे में कोई जानकारी नहीं है। कृपया हमें बताएं कि "मैंने सर्वर पर उपयोगकर्ता बनाया है" - क्या उपयोगकर्ता? क्या सर्वर? एसक्यूएल सर्वर या विंडोज़?

कामकाज के रूप में, आप sa या एक विंडोज लॉगिन जो सिसडमिन समूह का हिस्सा हैं, के रूप में निष्पादित एक संग्रहित प्रक्रिया भी बना सकते हैं, और यह कम-विशेषाधिकार प्राप्त उपयोगकर्ता निष्पादित करने की क्षमता प्रदान करते हैं। हालांकि मैं सब पर कोई अन्य अनुमतियों के साथ एक चपरासी उपयोगकर्ता जोड़ने और बस उन्हें db_backupoperator भूमिका को जोड़कर एक डेटाबेस बैकअप करने में सक्षम था:

CREATE LOGIN peon WITH PASSWORD = 'foo', CHECK_POLICY = OFF; 
GO 
CREATE DATABASE splunge; 
GO 
USE splunge; 
GO 
CREATE USER peon FROM LOGIN peon; 
GO 
EXEC sp_addrolemember 'db_backupoperator', 'peon'; 
GO 
EXECUTE AS USER = 'peon'; 
GO 
BACKUP DATABASE splunge 
    TO DISK = 'C:\tmp\splung.bak' -- change this path obviously 
    WITH INIT, COMPRESSION; 
GO 
REVERT; 
GO 

तो, मैं मान्य होता है कि SQL सर्वर सेवा खाते के लिए पर्याप्त विशेषाधिकार है प्रश्न में पथ को लिखें। मुझे पता है कि आपने कहा था कि यह मामला था, लेकिन जैसा कि मैंने दिखाया है यह peon उपयोगकर्ता के साथ समस्या नहीं प्रतीत होता है बल्कि फाइल सिस्टम को लिखने के लिए अंतर्निहित इंजन की क्षमता है।आप db_backupoperator भूमिका के लिए peon जोड़े बिना ऊपर बैकअप आदेश की कोशिश, तो आप इस त्रुटि मिलती है (यह आप वास्तविक बैकअप आदेश के पास कहीं भी मिलता है नहीं करता है या किसी डिस्क पर अनुमतियों की पुष्टि):

Msg 262, Level 14, State 1, Line 1 
BACKUP DATABASE permission denied in database 'splunge'. 
Msg 3013, Level 16, State 1, Line 1 
BACKUP DATABASE is terminating abnormally. 

हैं यह एक विंडोज लॉगिन है, तो कृपया सत्यापित करें कि उपयोगकर्ता वास्तव में, प्रश्न में फ़ोल्डर को लिखने की अनुमति देता है। C:\Program Files\... के तहत पदानुक्रम के अलावा एक अलग फ़ोल्डर आज़माएं और सीधे रूट पर लिखने की कोशिश न करें (उदा। C:\file.bak)।

+1

ठीक है। मुझे बेहतर समझाएं: मैंने लॉगिन बनाया है, जो SQL सर्वर ऑथ नियंत्रण है, और db_backupoperator की अनुमति देता है और इसी तरह। बिंदु है: यह डिस्क पर बैक अप लिख सकता है, लेकिन यह नहीं दिखा सकता सिस्टम संरचना (डायलॉग बॉक्स पर ट्री व्यू) सिस्टम में, यहां तक ​​कि पथ जिनके पास उपयोगकर्ता की अनुमति है (लॉग इन विंडोज उपयोगकर्ता और सर्विस अकाउंट) .मैं आपकी प्रक्रिया का प्रयास करूंगा और देख सकता हूं कि मुझे क्या मिलता है ..... धन्यवाद रास्ता ... –

+0

जांचें कि आपका उपयोगकर्ता xp_fixeddrives, xp_dirtree और xp_fileexist निष्पादित कर सकता है - यह दृश्यों के पीछे संवाद करता है। व्यक्तिगत रूप से मैं एक संग्रहित प्रक्रिया तैयार करता हूं जो डेटाबेस को बैकअप में तर्क के रूप में ले जाता है, और उपयोगकर्ता को एक संवाद से गंतव्य चुनने के बजाय आउटपुट स्थान को नियंत्रित करता है (या यूआई का उपयोग करता है)। स्थान संवाद में कुछ सुंदर बुनियादी कार्यक्षमता अनुपलब्ध है (जैसे फ़ोल्डर बनाएं) और यह वर्षों से इस तरह से रहा है ... –

1

मेरा अनुमान है कि यह विंडोज प्रमाणीकरण और एकीकृत सुरक्षा के साथ एक समस्या है। SQL सर्वर कभी-कभी उपयोगकर्ता लॉगिंग का प्रतिरूपण करता है। उस Windows उपयोगकर्ता के लिए Windows ACL अनुमतियां जोड़ने का प्रयास करें, जिसके साथ आप लॉग ऑन कर रहे हैं।

+0

यह तब होता है जब मैं विंडोज व्यवस्थापक के रूप में लॉग इन करता हूं लेकिन "उपयोगकर्ता" एसक्यूएल लॉगिन (सा नहीं) का उपयोग करता हूं। इसे एकीकृत सुरक्षा या भूमिका/अनुमतियों के साथ करना है? यह अभी मेरी वर्तमान समस्या है, मुझे नहीं पता कि समस्या कहां है =/ –

12

db_backupoperator एक डेटाबेस भूमिका है, न कि सर्वर रोल या Windows अनुमति। यह बैकअप बनाने के लिए उपयोगकर्ता को डेटाबेस पर आवश्यक पहुंच प्रदान करता है। यह सर्वर की फ़ाइल संरचना के लिए कोई अधिकार नहीं देता है, जो वास्तव में बैकअप फ़ाइल बनाने के लिए आवश्यक है।

IIRC, एक बैकअप बनाने के लिए फ़ाइल संरचना का उपयोग करने की, उपयोगकर्ता या तो पहले से ही उस तक पहुँच, या सर्वर भूमिका सिस्टम प्रशासक पिकअप को एसक्यूएल सर्वर के लिए अपने विंडोज अधिकारों का उपयोग करने के लिए विंडोज़/डोमेन अधिकार होने चाहिए।

इसके अलावा, वास्तव में डेटाबेस को पुनर्स्थापित करने के लिए उपयोगकर्ता को सर्वर रोल dbcreator की आवश्यकता होगी।

+0

मैंने डिस्कडमिन, डीबीक्रिएटर और सर्वरडमिन जोड़ा लेकिन काम नहीं किया। sysadmin ठीक काम करता है लेकिन मैं उस उपयोगकर्ता को sysadmin नहीं होने दे सकता। –

+0

खैर, डिस्कडमिन और सर्वरडमिन मुझे यकीन नहीं था। देखें कि sysadmin काम करता है या नहीं। – RBarryYoung

1

मैं विंडोज 10 (x64), SQL सर्वर एक्सप्रेस 2014 चला रहा हूं, एक x86 SQL सर्वर 2005 डेटाबेस में बैकअप को पुनर्स्थापित करने का प्रयास कर रहा हूं, इसलिए मैं डेटा का उपयोग कर सकता हूं और हमारे एप्लिकेशन में एक बग हल करने में मदद कर सकता हूं। बैक अप और एक .bak फ़ाइल को पुनर्स्थापित करते समय मैं अनुमति के साथ उसी परिदृश्य में भाग गया।

वही बात, मैं अपने पीसी पर एक व्यवस्थापक हूं, मैंने माना (मेरी गलती) कि SQL सर्वर सेवा मेरे विंडोज खाते के तहत चल रही थी (क्योंकि मैं अपने विंडोज क्रेडेंशियल के साथ एसक्यूएल प्रबंधन पर लॉग ऑन करूंगा)।

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

चूंकि मेरा पर्यावरण बंद है - केवल विकास के लिए - यह मेरे लिए जाने के लिए एक त्वरित समाधान था। मुझे आपको चेतावनी देना चाहिए, यह अंतिम उपयोगकर्ताओं के लिए सबसे अच्छा अभ्यास नहीं है! बस हमारे लिए देवता।

संबंधित मुद्दे