डेटाबेस संलग्न करते समय प्रवेश निषेध है


146

मैं SQL Server 2008 डेवलपर संस्करण का उपयोग कर रहा हूं। मैं AdventureWorks2008 डेटाबेस को संलग्न करने की कोशिश कर रहा था।

जब मैंने संलग्न करने का प्रयास किया, तो मुझे "पहुँच अस्वीकृत" त्रुटि मिली। इवेंट लॉग के अनुसार, यह O / S से आया था:

ओपन विफल: फ़ाइल नहीं खोल सका D: \ ProjectData \ AdventureWorks \ AdventureWorksLT2008_Data.mdf फ़ाइल संख्या 0. OS त्रुटि के लिए: 5 (प्रवेश निषेध है।)।

मैंने सोचा कि "NTFS समस्या", लेकिन सिस्टम (और I) ने दोनों फाइलों तक पहुंच को संशोधित किया है।

मैंने पाया कि यदि मैं सा के रूप में लॉग इन करता हूं, तो मैं डेटाबेस को सफलतापूर्वक संलग्न कर सकता हूं, लेकिन मेरा उपयोगकर्ता खाता काम नहीं करेगा।

मैं अपनी मशीन पर स्थानीय प्रशासकों के समूह का सदस्य हूं, और मैं SQL सर्वर उदाहरण में sysadmins भूमिका में हूं।

किसी भी विचार क्यों मुझे सा के रूप में लॉग इन करना पड़ा?


क्या एमडीएफ फ़ाइल को किसी भी संयोग से एन्क्रिप्ट किया गया है?
ब्रेटकी

नहींं - मेरे लिए असली जिज्ञासा यह है कि अगर मैं सा (मैनेजमेंट स्टूडियो का उपयोग करके) लॉग इन करता हूं तो यह ठीक काम करता है, लेकिन अगर मैं अपने स्थानीय व्यवस्थापक खाते का उपयोग करता हूं तो यह काम नहीं करता। मेरा खाता एक व्यवस्थापक है, एक डोमेन व्यवस्थापक है, और यह वह खाता है जिसे मैंने SQL सर्वर स्थापित करने के दौरान लॉग इन किया था (सेटअप के दौरान मेरे वर्तमान खाते को एक sysadmin बनाने का विकल्प था, और मैंने ऐसा किया)।
JMarsch

1
यह कैसे W7 में UAC काम करता है, कोई आश्चर्य की बात नहीं है।
अल केप्प

@AlKepp नहीं - एक UAC बात नहीं है। बस सही (SQL सर्वर खाते के रूप में लॉगिंग, समस्या UAC के साथ कुछ नहीं करना है)। इसके अलावा, सिर्फ स्थानीय प्रवेश समूह का सदस्य होने के नाते, मुझे अपनी अनुमति मिल जाती है - मुझे अपने AD क्रेडेंशियल्स के काम करने के लिए उच्च स्तर की आवश्यकता नहीं है।
जरमच

जवाबों:


162

एक व्यवस्थापक के रूप में SQL सर्वर प्रबंधन स्टूडियो चलाएँ। (राइट क्लिक-> व्यवस्थापक के रूप में चलाएं) जिसने मेरे मामले में सभी अजीबता का ख्याल रखा।

SQL SRV एक्सप्रेस 2008 R2। विंडोज 7


5
व्यवस्थापक के रूप में रनिंग मैनेजमेंट स्टूडियो मेरे लिए काम नहीं करता था। यह त्रुटि तब होती है जब विंडोज़ सेवा शुरू करने का प्रयास किया जाता है।
nuzzolilo 19

9
प्रशासक के रूप में दौड़ना पहला कदम है। दूसरा कदम Windows प्रमाणीकरण द्वारा SQL सर्वर में प्रवेश कर रहा है। (यह विधि मेरे लिए काम करती है!)
फुरकान इस्किन

3
मेरे लिए भी काम किया। विंडोज़ पर अनुमति और त्रुटियों की थकावट और निराशा को शब्दों में व्यक्त नहीं कर सकते। मैं एक सहायक हूँ!
डेविड मास्टर्स

मेरे लिए भी काम किया। पहले तो मुझे नहीं लगा कि यह काम करेगा क्योंकि SSMS सिर्फ UI क्लाइंट है। मुझे लगा कि एडमिन के रूप में सेवा की आवश्यकता है। लेकिन SSMS को एडमिन के रूप में चलाना पर्याप्त है।
ल्यूक Vo

2
मेरे लिए भी काम किया। एसक्यूएल सर्वर 2019, एसएसएमएस 18.4
रयान थॉमस

104

सभी टिप्पणियों के लिए धन्यवाद। आप में से कुछ ने मुझे उत्तर की ओर ले जाने में मदद की। यहाँ मैं क्या पाया:

यह एक NTFS अनुमति समस्या थी, और SQL समस्या नहीं। इसके अलावा, यह बग की तरह दिखता है (और यह दोहराने योग्य है)।

समस्या: मैं जिस खाते का उपयोग कर रहा था, उसमें mdf और ldf फ़ाइलों के लिए पूर्ण नियंत्रण NTFS अनुमतियाँ थीं। हालाँकि, यह समूह सदस्यता के माध्यम से उन अनुमतियों (स्थानीय प्रशासक समूह की अनुमति थी, और मेरा खाता स्थानीय व्यवस्थापक का सदस्य है)। (मैंने अनुमतियां सत्यापित कीं)

अगर मैं अटैचमेंट करने की कोशिश करता हूं, तो SQL सर्वर से मुझे कनेक्ट करें (जहां मैं प्रवेश समूह में हूं), यह NTFS समस्या के साथ विफल हो जाता है।

हालाँकि, अगर मैं वही फ़ाइल अनुमतियाँ प्रदान करता हूं जो स्थानीय व्यवस्थापक समूह के पास सीधे मेरे डोमेन खाते में है, तो मैं बिना किसी समस्या के संलग्न कर सकता हूं।

(ओह, और हाँ, मैंने इस मशीन पर स्थानीय समूहों की जाँच की, और मैंने सत्यापित किया कि मेरा डोमेन खाता वास्तव में स्थानीय प्रवेश समूह का सदस्य है)।

इसलिए, ऐसा लगता है कि त्रुटि तब होती है क्योंकि उपयोगकर्ता कोड रखने वाली अनुमतियों के लिए कुछ कोड (SQL सर्वर या प्रबंधन स्टूडियो में) की जांच करता है, लेकिन यह समूह अनुमतियों की जांच करने के लिए इतना दूर नहीं जाता है कि उपयोगकर्ता खाता विरासत में मिलता है।

यह मेरे लिए अजीब लगता है, लेकिन मैं इसे बार-बार पुन: पेश कर सकता हूं, इसलिए मैंने निष्कर्ष निकाला है कि यह उत्तर है।

अपडेट: मैंने इसे एक बग के रूप में रिपोर्ट किया: https://connect.microsoft.com/SQLServer/feedback/details/539703/access-denied-attaching-a-database-when-permissions-are-inherited


104
यदि, मेरी तरह, आप विंडोज 7 का उपयोग कर रहे हैं, तो आपको इस त्रुटि से बचने के लिए प्रशासक के रूप में SQL सर्वर प्रबंधन स्टूडियो चलाना होगा।
एंटनी

4
Win7 प्रो पर SS2008 एक्सप्रेस का उपयोग करके पुन: प्रस्तुत किया गया। Sqlcmd और SSMS दोनों के लिए समान मुद्दा। == मेल्डुंग '5120', एबेने '16', स्टेटस '101', सर्वर 'डीएजीओ / स्क्लेप्रैस', जेइल 1 - 'डाई फॉसीचे डेटी डी': \ data \ mssql's_rei.mdf 'kann nicht geöffnet werden। Betriebssystemfehler 5: '5 (Zugriff verweigert) == उपयोगकर्ता तक पूरी पहुँच प्रदान करना (जो स्थानीय व्यवस्थापक समूह का सदस्य है, जिसकी पहुँच) समस्या को हल करता है। इसके अलावा, sqlcmd (या SSMS, मुझे लगता है) चलाने के रूप में प्रशासक इस त्रुटि का उत्पादन नहीं करता है।
लुमि

1
एंथनी हाईस्की का जवाब है। बस एक प्रशासक के रूप में प्रबंधन स्टूडियो को चलाने के लिए सुनिश्चित होना चाहिए।
जेम्स

वही समस्या, और समाधान, मेरे लिए। 2008R2, Win 7, आदि ने खुद को सुरक्षा सूची में स्पष्ट रूप से जोड़ा, और यह काम किया। मुझे लगता है कि SQL सर्वर उन्हें पढ़ सकता है, एक बार संलग्न कर सकता है, लेकिन संलग्न करते समय मेरी क्रेडेंशियल्स के तहत नहीं?
एंड्रयू बैकर

4
व्यवस्थापक के रूप में रनिंग मैनेजमेंट स्टूडियो मेरे लिए काम नहीं करता था। यह त्रुटि तब होती है जब विंडोज़ सेवा शुरू करने का प्रयास किया जाता है।
nuzzolilo

20

मैं पोस्ट किए गए उत्तरों में अतिरिक्त जानकारी जोड़ना चाहूंगा।

डेटाबेस का पता लगाते समय सावधान रहें क्योंकि आपके द्वारा लॉग की गई विंडोज़ उपयोगकर्ता .mdf फाइल की अनुमति वाला एकमात्र उपयोगकर्ता बन जाता है! मूल अनुमतियाँ .mdf फ़ाइल जिसमें उपयोगकर्ता SQLServerMSSQLUser$<computer_name>$<instance_name>और व्यवस्थापक खाते शामिल थे जो भी आपके द्वारा लॉग इन किए गए विंडोज़ उपयोगकर्ता (sql सर्वर उपयोगकर्ता नहीं) द्वारा अधिलेखित हो जाते हैं। बूम, सभी अनुमतियां उसी तरह चली गईं। इसलिए जैसा कि दूसरों ने कहा है और अपनी .mdf फ़ाइल पर राइट क्लिक करें और अनुमतियों की दोबारा जाँच करें।

मैं इस समस्या में भाग गया क्योंकि मैंने डेटाबेस से जुड़ने के लिए SSMS का उपयोग किया था (इससे कोई फर्क नहीं पड़ता कि कौन सा sql सर्वर खाता है) और डेटाबेस को अलग कर दिया। यह करने के बाद कि मेरी विंडोज़ उपयोगकर्ता एकमात्र ऐसी थी जिसके पास .mdf फ़ाइल की कोई अनुमति थी। इसलिए बाद में जब मैंने sa खाते का उपयोग करके db को संलग्न करने का प्रयास किया, तो इसने "पहुंच निषेध" त्रुटि को फेंक दिया।

मूल अनुमतियों को चातुर्य में रखने के लिए आपको डेटाबेस को ऑफ़लाइन रखना चाहिए, फिर अलग करना चाहिए, फिर उस क्रम में संलग्न करना चाहिए जैसे:

USE [master]
GO
-- kick all users out of the db
ALTER DATABASE mydb
SET SINGLE_USER WITH ROLLBACK IMMEDIATE 
GO

-- Take the Database Offline
ALTER DATABASE mydb SET OFFLINE WITH
ROLLBACK IMMEDIATE
GO

-- detach the db
EXEC master.dbo.sp_detach_db @dbname = N'mydb'
GO

1
इसके लिए धन्यवाद! मुझे लगता है कि यह बहुत आसान है इसे सही तरीके से प्राप्त करें यदि आप सर्वरडाइन विशेषाधिकारों के साथ SQL सर्वर प्रमाणित खाते का उपयोग करने में भी लॉग इन हैं।
विलियम रोज

दुर्भाग्य से, यह मेरी मदद नहीं करता है अगर मैं मूल रूप से एक विंडोज उपयोगकर्ता के रूप में 'सा' के रूप में डेटाबेस का निर्माण करता हूं
डेविड गार्डिनर

"डेटाबेस से बाहर निकलते समय सावधान रहें"। SSMS को सावधान रहने के लिए कहें। मेरी समस्याएँ इसलिए हुईं क्योंकि SSMS कॉपी डेटाबेस कमांड का उपयोग करने से बिना किसी स्पष्टीकरण के मुझे शाफ़्ट शहर में छोड़ दिया गया
एलन मैकडॉनल्ड

18

उस फ़ोल्डर में अनुमति जोड़ें जहां आपका .mdf फ़ाइल है।

इस नाम की जाँच करें: NT Service\MSSQLSERVER

और Locationअपने सर्वर नाम में बदलाव करें।


5
सटीक खाता नाम खोजने के लिए, चूंकि यह उदाहरण से उदाहरण के लिए भिन्न हो सकता है, इसे चलाएं SELECT servicename, service_account FROM sys.dm_server_services:।
अरिव सिस्टड

13

यह समस्या UAC (उपयोगकर्ता खाता नियंत्रण) के कारण है, है ना? यद्यपि आपका उपयोगकर्ता खाता प्रशासक समूह का सदस्य है, लेकिन विंडोज 7 में UAC आपको "व्यवस्थापक" के रूप में प्रोग्राम चलाने तक आपको व्यवस्थापक कार्य करने की अनुमति नहीं देता है। यह SQL सर्वर या प्रबंधन स्टूडियो या जो कुछ भी एक वास्तविक बग नहीं है। (हालांकि यह संभवतः समस्या को जान सकता है और आपको केवल "त्रुटि 5" की शिकायत के बजाय उन्नत अनुमतियों के लिए पूछ सकता है।)


11

एक व्यवस्थापक के रूप में SQL सर्वर प्रबंधन स्टूडियो चलाएँ। (राइट क्लिक-> व्यवस्थापक के रूप में चलाएं) मेरे लिए विंडोज 7 - SQL सर्वर 2008 R2 के साथ काम किया


1
इस उत्तर को उखाड़ा जाना चाहिए। SSMS को प्रशासक के रूप में चलाना एक ऐसा कार्य है जो इस उत्तर को दोहराता है। Microsoft इसे "अपेक्षित व्यवहार" के रूप में रिपोर्ट करता है: लिंक
FreeText

क्या यह मंडोन्मांडो के उत्तर के समान नहीं है?
मोर्टब

10

Windows 7 में SQL2005 डेटाबेस इस तरह से संलग्न किया जा सकता है:

start menu >
 all program >
  Microsoft sql server 2005 >
   sql server management studio >
    right click >
     run as administrator >
      click ok

और फिर संलग्न डेटाबेस सफलतापूर्वक पूरा हुआ।


यह विंडोज 10 पर प्रबंधन स्टूडियो 2008 आर 2 के साथ SQL सर्वर 2016 के साथ काम करता है :)
पैरा

9

जब आप sa(या किसी Sql सर्वर खाते) के रूप में लॉगिन करते हैं, तो आप SQL सर्वर सेवा खाते के रूप में कार्य कर रहे होते हैं, जब आप लॉग इन करते हैं, तो आपके पास आपके खाते की अनुमति होती है। किसी कारण से आपके पास उपयुक्त फ़ाइल पहुँच नहीं है, लेकिन सेवा खाता है।


NTFS मुद्दा पहली चीज़ थी जिसे मैंने भी सोचा था, लेकिन यह मुद्दा प्रतीत नहीं होता है: मैं स्थानीय व्यवस्थापक समूह का सदस्य हूं, और मैंने सत्यापित किया कि व्यवस्थापक के पास mdf और ldf फ़ाइलों पर "पूर्ण नियंत्रण" अनुमतियाँ हैं । इसके अलावा, मैं फ़ाइलों का स्वामी हूं - मैंने केवल एक निर्देशिका बनाई थी और अपने स्थान पर mdf / ldf फ़ाइलों की प्रतिलिपि बनाई थी।
JMarsch

@JMarsch: @ नाइक कह रहा है कि 'सा' में SQLSERVER राइट्स का एक सेट है - NTFS राइट्स नहीं - जो आपके अकाउंट में नहीं है।
ट्रेवोक

@ ट्रेवोक: मैं आपके साथ हूं। अगर ऐसा है, तो मुझे अपने उपयोगकर्ता खाते में क्या अधिकार चाहिए? (मैं पहले से ही sysadmin भूमिका को सौंपा गया हूं)
JMarsch

1
पुराना उत्तर, यह, लेकिन पाँच मिनट पहले अपने जैसे लोगों के लिए: आप रन करके सटीक सेवा उपयोगकर्ता नाम पा सकते हैंSELECT servicename, service_account FROM sys.dm_server_services
Arve Systad

6

मुझे यह समाधान मिला: फ़ोल्डर पर राइट क्लिक करें जहां आप अपनी .mdf फ़ाइल संग्रहीत करते हैं -> गुण क्लिक करें -> सुरक्षा टैब चुनें, संपादित करें पर क्लिक करें ... और इसे पूर्ण नियंत्रण दें। उम्मीद है की यह मदद करेगा!


5

saउपयोगकर्ता NTFS खातों का उपयोग करता है SQLServerMSSQLUser$<computer_name>$<instance_name>और SQLServerSQLAgentUser$<computer_name>$<instance_name>उपयोग करने के लिए डेटाबेस फ़ाइलें। आप इन दोनों उपयोगकर्ताओं में से एक या दोनों के लिए अनुमतियाँ जोड़ने का प्रयास कर सकते हैं।

मुझे नहीं पता कि आपकी समस्या को हल करता है क्योंकि आप कहते हैं कि आपको saउपयोगकर्ता के साथ कोई समस्या नहीं है , लेकिन मुझे आशा है कि यह मदद करता है।


5

मेरे साथ - विंडो 8 पर चल रहा है - पहले से SQL सर्वर मैनेजर स्टूडियो पर क्लिक करें -> व्यवस्थापक के साथ चलाएँ। -> कोई समस्या नहीं है


5

यह हो सकता है तय है लेकिन कट्टरपंथी, बस उस फ़ोल्डर पर जाएं जहां आपने mdf फ़ाइल संग्रहीत की है । फ़ाइल का चयन करें-> राइट क्लिक -> गुणों पर क्लिक करें और लॉग इन के लिए फ़ाइल की पूर्ण अनुमति दें उपयोगकर्ता सुरक्षा


3

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

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


बहुत सारी स्थितियों में, मैं आपकी बात से सहमत होता हूँ, लेकिन SQL सर्वर के साथ, आप अक्सर स्केलेबिलिटी के लिए अलग-अलग स्पिंडल या वॉल्यूम पर अपने डेटाबेस का पता लगाने में सक्षम होना चाहते हैं। वास्तव में, लेन-देन के थ्रूपुट को बेहतर बनाने के लिए डेटाबेस से एक अलग स्पिंडल पर लेनदेन लॉग को डालना एक आम बात है।
JMarsch

@JMarsch: हाँ .. निर्देशिका वास्तव में विन्यास योग्य थोरुग हैं सर्वर गुण> डिफ़ॉल्ट डेटा और लॉग स्थानों के लिए डेटाबेस सेटिंग्स टैब ...
NotMe

यह चूक को कवर करता है, लेकिन यह केवल चूक है। यह पूरी तरह से स्वीकार्य है कि कहीं और डीबीएस डालें, और वास्तव में यह भी असामान्य नहीं है कि यदि आपके पास 1 से अधिक सक्रिय रूप से उपयोग किए गए डेटाबेस का प्रबंधन करने वाला आपका सर्वर है।
JMarsch

मुझे डिफ़ॉल्ट sql सर्वर निर्देशिका के साथ भी यही समस्या है: c: \ Program Files \ Microsoft SQL Server \ MSSQL10_50.SPATIAL_IM \ MSSQL \ DATA \ mydb.mdf win7 पर।
goku_da_master 15

3

मैं इस जानकारी को भी जोड़ना चाहता था।

http://www.mssqltips.com/sqlservertip/2528/database-attach-failure-in-sql-server-2008-r2/

उपाय

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

जब हम डेटाबेस फ़ाइलों को अलग करते हैं, तो स्वामी वह व्यक्ति होता है जिसने अलग-अलग कमांड किया था, इसलिए समस्या को हल करने के लिए हमें mdf और ldf फ़ाइलों के स्वामी के रूप में अन्य लॉगिन को जोड़ना या जोड़ना होगा।

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

इस समस्या को हल करने के लिए, अन्य लॉगिन या किसी अन्य लॉगिन को जोड़ने के लिए Add ... बटन पर क्लिक करें और लॉगिन पूर्ण नियंत्रण दें। आपको इसे "ldf" फ़ाइल के लिए भी करना चाहिए। एक बार जब आप इस कार्य को पूरा कर लेते हैं तो ओके बटन पर क्लिक करें। (अन्य OS संस्करणों के लिए ध्यान दें कि आपके पास एक संपादन विकल्प हो सकता है, पहले इस पर क्लिक करें और फिर आपको Add ... विकल्प दिखाई देगा।)


मैंने उस टुकड़ी का प्रदर्शन करने वाले उपयोगकर्ता से मिलान करने के लिए SSMS में अपना कनेक्शन बदल दिया, और मैं अटैचमेंट करने में सक्षम था।
glitzsfa

2

इस समस्या के विशेष रूप से भिन्न होने वाले किसी व्यक्ति के लिए इसके लायक है:

  • SQL एक्सप्रेस 2008
  • विजुअल स्टूडियो 2010 प्रीमियम

App_data फ़ोल्डर के संदर्भ मेनू के माध्यम से मैंने डिबगिंग उद्देश्यों के लिए एक SQL एक्सप्रेस डेटाबेस बनाया था। कनेक्शन स्ट्रिंग (NHibernate द्वारा प्रयुक्त) इस प्रकार थी:

Server=.\SQLExpress;
AttachDbFilename=|DataDirectory|DebugDatabase.mdf;
Database=DebugDatabase;
Trusted_Connection=Yes;

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

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

पुनश्च। क्रेडिट इस ब्लॉग पोस्ट पर जाता है जिसे मैंने इस विशेष समस्या को हल करते समय पाया, समस्या को हल करने के लिए डेटाबेस को संलग्न / अलग करने के लिए ट्रिगर किया गया।


2

मैंने डिफ़ॉल्ट डेटा फ़ोल्डर से अपने asp.net app_data फ़ोल्डर में एक डेटाबेस mdf स्थानांतरित किया और डेटाबेस को ऑनलाइन सेट करने की कोशिश में इस समस्या में भाग गया।

मैंने मूल फ़ाइल में अन्य फ़ाइल डेटाबेस की सुरक्षा सेटिंग्स की तुलना की गई फ़ाइलों में की और देखा कि MSSQL $ SQLEXPRESS को उनके नए स्थान में फ़ाइलों को अनुमतियाँ नहीं दी गई थीं। मैंने "NT SERVICE \ MSSQL $ SQLEXPRESS" के लिए पूर्ण नियंत्रण जोड़ा (इसमें NT सेवा शामिल होनी चाहिए) और यह ठीक-ठीक संलग्न है।

ऐसा प्रतीत होता है कि मूल डेटा फ़ोल्डर में ये अनुमतियाँ हैं और फ़ाइलें इसे विरासत में मिली हैं। फाइलें और पाठ्यक्रम के वंशानुगत विराम को स्थानांतरित करें।

मैंने एक और प्रोजेक्ट की mdf फाइल चेक की, जो मैंने सीधे अपने app_data फोल्डर में बनाई थी। इसमें MSSQL $ SQLEXPRESS की अनुमति नहीं है। हममम। मुझे आश्चर्य है कि SQL एक्सप्रेस एक को क्यों पसंद करता है लेकिन दूसरे को नहीं?


यह समाधान मेरे लिए विंडोज 10 और एसक्यूएल सर्वर 2017 पर काम करता था जब लॉग फाइल को एक अलग डिस्क पर ले जाया जाता था। मेरे मामले में उपयोगकर्ता नाम "NT SERVICE \ MSSQLSERVER" था
जॉन हेनली

1

यह NTFS अनुमतियों की तरह लगता है। इसका आम तौर पर मतलब है कि आपका SQL सर्वर सेवा खाता केवल फ़ाइल तक पहुँच है (ध्यान दें कि SQL सर्वर डेटाबेस सेवा तक पहुँचने के लिए उसी सेवा खाते का उपयोग करता है, भले ही आप कैसे लॉग इन करें)। क्या आप वाकई अपने आप में लॉग इन करने और sa के रूप में लॉग इन करने के बीच फ़ोल्डर अनुमतियों को नहीं बदलते हैं? यदि आप अलग हो जाते हैं और फिर से प्रयास करते हैं, तो क्या यह अभी भी वही समस्या है?


मेरे मामले में, नहीं - मैंने यह सुनिश्चित करने के लिए बार-बार सर्वर किया। मुद्दा यह था कि मेरे खाते में केवल अप्रत्यक्ष स्तर के माध्यम से फ़ाइलों तक पहुंच थी - मैं समूह डोमेन व्यवस्थापक का सदस्य था। डोमेन व्यवस्थापक मशीन पर स्थानीय प्रशासकों के समूह का सदस्य था, और स्थानीय एडमिन (और सिस्टम) का फ़ोल्डर पर पूर्ण नियंत्रण था। (इसलिए समूह के 2 स्तर अप्रत्यक्ष थे)। अगर मैंने सीधे खुद को अनुमति दी, तो यह काम किया, अगर मैंने उन्हें हटा दिया, तो मैं अभी भी Explorere, आदि से फ़ाइलों को कॉपी / हटा सकता हूं, लेकिन SQL सर्वर उन्हें लोड नहीं कर सकता।
JMarsch

जब डेटाबेस संलग्न करने का प्रयास करें। Windows authenticated userडेटाबेस फ़ाइलों पर अनुमति को पार करने में हमारी मदद के लिए लॉग इन करें। (यह मामला, एमएस SQLServer उदाहरण में डिस्क में जो विंडोज ओएस है)।
Do Nhu Vy

1

डेटाबेस संलग्न करते समय मेरे पास एक ही मुद्दा था। यह एक SQL मुद्दा नहीं था यह एक खाता समस्या थी। पैनल कंट्रोल / यूजर अकाउंट कंट्रोल सेटिंग्स / "नोटिफाई नोटिफाई" पर जाएं। अंत में, कंप्यूटर को पुनरारंभ करें और यह मेरे लिए काम करता है।


1

मैंने mdf फ़ाइल को डेटाबेस पर राइट क्लिक करके और विज़ार्ड में AdventureWorks2012_Data_log.ldf फ़ाइल को हटाकर संलग्न किया। Mdf फ़ाइल को निम्न स्थान पर रखा गया था

    C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA

उपरोक्त विधि ने मुझे समस्या को हल करने में मदद की।


1

मैं इस पृष्ठ को पढ़ रहा था और उनका वहाँ एक दिलचस्प वाक्य है:

सावधानी: उपयोगकर्ताओं को इन भूमिकाओं में जोड़ते समय बहुत ही चयनात्मक रहें। उदाहरण के लिए, sysadmin हर डेटाबेस में dbo से बाहर मैप करता है और sa खाते का उपयोग करने में लॉगिंग के बराबर है।

बेशक, उनके पास यह भी है:

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

इसलिए यदि आप एक डोमेन व्यवस्थापक हैं और SQL 'sysadmin' समूह में हैं, तो दुनिया को आपका क्रस्टेशियन होना चाहिए।

बेशक, माइक्रोसॉफ्ट के अनुसार, आपको इन दो पन्नों पर एक त्वरित नज़र डालनी चाहिए:
लिंक करें डेटाबेस पूर्वापेक्षाएँ

डेटाबेस स्थापित करने के लिए लिंक

आप शरारती हो रहे हैं और उन्हें मैन्युअल रूप से संलग्न करने की कोशिश कर रहे हैं :) गंभीरता से, हालांकि, क्या आपके पास AdventureWorks2002 डेटाबेस के लिए सभी आवश्यक शर्तें हैं?
मुझे संदेह है कि यह सिर्फ एक और Microsoft विषमता / किनारे का मामला है, लेकिन मैं गलत हो सकता है।


+1 क्योंकि आपकी टिप्पणी ने मुझे उत्तर खोजने में मदद की। मैं इस थ्रेड के लिए अपने निष्कर्ष पोस्ट करूंगा। BTW (मैं बहुत ही अजीब नीतियों के कारण "शरारती" हो रहा था जहां मैं काम करता हूं - एडवेंचरवर्क डेटाबेस को एक exe के रूप में वितरित किया जाता है। मैं exe की डाउनलोड नहीं कर सकता हूं! (मैं ज़िप फ़ाइलों और MSI फ़ाइलों को डाउनलोड कर सकता हूं, इसलिए मुझे नहीं दिखता) कैसे एक्सई फ़िल्टरिंग वास्तव में रास्ते में आने के अलावा अन्य किसी भी तरह का करता है, लेकिन वे नियम हैं)। वैसे भी, मैं कोडक से ज़िप के रूप में कच्चे mdf फाइलें प्राप्त कर सकता हूं, और जब मैं इस छोटी सी जिज्ञासा पर भागा।
JMarsch

1

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

USE [master]
GO
CREATE DATABASE [DataBasename] ON 
( FILENAME = N'C:\data\DataBasename.mdf' )
 FOR ATTACH
GO

करने के लिए परिवर्तन के लिए संलग्न -> ATTACH_FORCE_REBUILD_LOG के लिए

USE [master]
GO
CREATE DATABASE [DataBasename] ON 
( FILENAME = N'C:\data\DataBasename.mdf' )
 FOR ATTACH_FORCE_REBUILD_LOG
GO

धन्यवाद, आपने मेरा दिन बचा लिया
शाहरुखियन

1

मुझे यह त्रुटि सा के रूप में मिली। मेरे मामले में, डेटाबेस सुरक्षा में कोई फर्क नहीं पड़ा। मैंने mdf और ldf फ़ाइलों में सभी को पूर्ण नियंत्रण में जोड़ा, और संलग्न ठीक हो गया।


1

मैं वीएस 2019 में एक ही मुद्दे का सामना कर रहा था। यदि कोई अभी भी उसी मुद्दे का सामना कर रहा है, तो कृपया सुनिश्चित करें कि आपके पास निम्नलिखित चीजें हैं / करें:

  1. आपको अपने m / c पर SQL Express स्थापित करना चाहिए
  2. पिछले संस्करणों के लिए एसएसडीटी को वीएस में स्थापित किया जाना चाहिए (वीएस 2019 में - स्थापित करते समय इस घटक की जांच करना सुनिश्चित करें) - आपको इस घटक को बाहरी रूप से जोड़ना होगा
  3. अपने कनेक्शन में 'यूजर इंस्टेंस = ट्रू' जोड़ें
  4. मुझे लगता है कि इसका वैकल्पिक - वी.एस. और एसक्यूएल एक्सप्रेस प्रशासनिक मोड में और एसक्यूएल एक्सप्रेस में व्यवस्थापक के रूप में लॉगिन करें

0

यह वास्तव में NTFS अनुमतियाँ और SQL सर्वर में एक अजीब बग है। मुझे यकीन नहीं है कि उपरोक्त बग रिपोर्ट सटीक है, या अतिरिक्त बग का उल्लेख कर सकती है।

विंडोज 7 पर इसे हल करने के लिए, मैंने SQL सर्वर प्रबंधन स्टूडियो को सामान्य रूप से चलाया (प्रशासक के रूप में नहीं)। मैंने तब एमडीएफ फ़ाइल संलग्न करने का प्रयास किया। इस प्रक्रिया में, मैंने पथ में चिपकाने के बजाय UI का उपयोग किया। मैंने गौर किया कि मुझसे रास्ता कट गया था। ऐसा इसलिए है क्योंकि MS SQL Server (SQLServerMSSQLUser $ machinename $ SQLEXPRESS) उपयोगकर्ता जो सॉफ़्टवेयर आपके लिए जोड़ता है, उसके पास फ़ोल्डर तक पहुँचने की अनुमति नहीं है (इस मामले में मेरे अपने उपयोगकर्ता फ़ोल्डर में एक फ़ोल्डर गहरा है)।

पथ को चिपकाना और उपरोक्त त्रुटि का परिणाम है। इसलिए - मैंने एमएस SQL ​​सर्वर उपयोगकर्ता को पहली निर्देशिका से शुरू करने की अनुमति दी जिसे वह (मेरे उपयोगकर्ता फ़ोल्डर) से अस्वीकार कर दिया गया था। मैंने तब प्रचार प्रसार को तुरंत रद्द कर दिया था क्योंकि यह एक अनंत काल ले सकता है, और फिर से अगले सबफ़ोल्डर के लिए आवश्यक अनुमतियों को पढ़ने की अनुमति देता है, और उस प्रचार को पूरी तरह से करने देता है।

अंत में, मैंने MS SQL Server उपयोगकर्ता को db के लिए .mdf और .ldf फ़ाइलों की अनुमति संशोधित की।

मैं अब डेटाबेस फ़ाइलों को संलग्न कर सकता हूं।


0

यदि आप sql सर्वर 2012 चलाते हैं, तो आप mdf-file के पुराने संस्करण को संलग्न करने का प्रयास करके यह त्रुटि प्राप्त कर सकते हैं। SQL सर्वर 2008 से एक mdf फ़ाइल पूर्व।


मुझे लगता है कि वह हिस्सा अपेक्षाकृत आत्म व्याख्यात्मक था। यह जानना अच्छा होगा कि इसे कैसे सुलझाया जाए।
dansan

0

मैंने केवल .mdf फ़ाइल को स्थानांतरित करके समस्या का हल किया है जिसे आप सार्वजनिक फ़ोल्डर में संलग्न करना चाहते हैं, मेरे मामले में मैंने इसे उपयोगकर्ताओं / सार्वजनिक फ़ोल्डर में स्थानांतरित कर दिया है। तब मैं इसे बिना किसी समस्या के वहाँ से संलग्न करता हूं। उम्मीद है की यह मदद करेगा।


0

जो लोग यहाँ अन्य समाधानों के साथ समस्या को ठीक नहीं कर सके, उनके लिए निम्नलिखित कार्य ने मेरे लिए काम किया:

अपने SQL सर्वर इंस्टॉलेशन में अपने "DATA" फ़ोल्डर पर जाएं, राइट क्लिक, प्रॉपर्टीज, सिक्योरिटी टैब, और "NETWORK SERVICE" उपयोगकर्ता के लिए पूर्ण नियंत्रण अनुमतियाँ जोड़ें।

http://decoding.wordpress.com/2008/08/25/sql-server-2005-expess-how-to-fix-error-3417/

(उपरोक्त लिंक SQL 2005 के लिए है, लेकिन इसने मेरे लिए SQL 2008 R2 स्थापना तय की है)।

कुछ अतिरिक्त जानकारी: द्वितीयक हार्ड ड्राइव (जो SQL स्थापना चालू थी) को बदलने के बाद मेरे लिए यह समस्या दिखाई दी। मैंने सभी फ़ाइलों की प्रतिलिपि बनाई, और मूल ड्राइव अक्षर को नई हार्ड डिस्क पर पुनर्स्थापित किया। हालाँकि, सुरक्षा अनुमतियों की प्रतिलिपि नहीं बनाई गई थी। मुझे लगता है कि अगली बार मैं डेटा को कॉपी करने के बेहतर तरीके का उपयोग करूंगा।


0

मेरे मामले में समस्या का हल क्या था:

USE [master]
GO
CREATE DATABASE [AdventureWorks2008R2] ON
( FILENAME = 'C:\Program Files\Microsfot SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\AdventureWors2008R2_Data.mdf')
FOR ATTACH_REBUILD_LOG

0

डेटाबेस को किसी अन्य फ़ोल्डर में कॉपी करें और "विंडोज ऑथेंटिकेशन" के साथ SQLServer में संलग्न करें या लॉग करें

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


0

मेरे पास एक ही मुद्दा है जब डेटाबेस को फिर से संलग्न करने के बाद और ड्राइव सी से एफ में ldf और mdf फ़ाइलों को स्थानांतरित करने के बाद।

इसे ठीक करने के लिए मुझे दोनों फाइलों में OWNER RIGHTS प्रिंसिपल को जोड़ना पड़ा और प्रॉपर्टीज डायलॉग के सिक्योरिटी टैब में उन पर पूरा नियंत्रण दिया।

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