risposta-alla-domanda-sullo-sviluppo-web-bd.com

Impossibile installare il database di adventureworks 2012 - Errore 5 del sistema operativo: accesso negato

Sto cercando di installare il database AdventureWorks 2012 in sql server 2012. Ho ottenuto il file mdf da questo link - http://msftdbprodsamples.codeplex.com/releases/view/93587

Ecco il nome del file che ho scaricato - AdventureWorks2012_Database.Zip

Sto facendo tutto questo su Windows 7 64 bit. 

Ottengo l'errore qui sotto:

Attach database failed for Server 'SuperPC\SQL2012'.  (Microsoft.SqlServer.Smo)

For help, click: http://go.Microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=11.0.2100.60+((SQL11_RTM).120210-1917+)&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=Attach+database+Server&LinkId=20476

ADDITIONAL INFORMATION:

An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)

Unable to open the physical file "C:\Databases\AdventureWorks2012_Data.mdf". Operating system error 5: "5(Access is denied.)". (Microsoft SQL Server, Error: 5120)

For help, click: http://go.Microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&ProdVer=11.00.2100&EvtSrc=MSSQLServer&EvtID=5120&LinkId=20476
23
Steam

Il motivo del problema - Inserimento dei file mdf e ldf del database in una directory all'esterno della cartella di installazione del server SQL "ufficiale".

Soluzione - 

http://tryingmicrosoft.com/error-while-attaching-a-database-to-sql-server-2008-r2/

Incolla il tuo file .mdf e il file ldf in questa directory - C:\Programmi\Microsoft SQL Server\MSSQL11.SS2012\MSSQL\DATA 

Soluzioni che NON hanno risolto il problema - 

1 - Sblocco dei file compressi. Controlla anche che i file mdf e ldf siano Non bloccati. (Passaggi - clic con il tasto destro del mouse sul file zip> proprietà> sblocco)

Unblock

2 - Eseguire SSMS 2012 come amministratore.

3 - Esegui una query SQL del modulo - 

CREATE DATABASE MyAdventureWorks 
    ON (FILENAME = 'C:\MySQLServer\AdventureWorks_Data.mdf'), 
    (FILENAME = 'C:\MySQLServer\AdventureWorks_Log.ldf') 
    FOR ATTACH; 
68
Steam

Opzioni

1. Spostare .mdf e .ldf nella directory di installazione SQLServer\Data\cartella (Ad es. C:\Programmi (x86)\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA)

2. Esegui SQL Server Management Studio come amministratore

3. Aggiungere i diritti all'utente di SQL Server alla directory a cui è necessario accedere. Non ero sicuro di quale utente fosse corretto ma sono riuscito a farlo funzionare dando all'account "[PCNAME]\Users" l'accesso completo alla cartella.

Passaggi

Cartella clic destro. Seleziona Proprietà. Seleziona la scheda "Sicurezza". Clic "Modificare". Seleziona "Utenti ([PCNAME]\Utenti)" ad es. Se il nome del pc era mycomp quindi sarebbe "Users (mycomp\Users)"

Fai clic sulla casella di controllo "Consenti" accanto a "Controllo completo" in "Autorizzazioni Per utenti"

Vedi qui per maggiori dettagli per le opzioni 1 e 2 ..

CREATE FILE ha rilevato l'errore 5 del sistema operativo (impossibile recuperare il testo per questo errore. Motivo: 15105)

18
Cyborg

Ho cambiato le autorizzazioni e questo ha funzionato per me: Sicurezza -> Avanzate. Aggiungi 'NT Service\MSSQLSERVER' e concedi l'accesso completo, disabilita l'ereditarietà , aggiungi te stesso per facilitare la risoluzione dei problemi. Fatelo su entrambi i file .mdf e .ldf.

12
Mikl X

Non è necessario spostare il file .mdf. Basta fare clic destro sulla cartella in cui si trova il database e modificare le autorizzazioni di sicurezza. Ho dato utenti autenticati pieno controllo. Quindi ho eseguito lo script TSQL qui sotto per allegare il database:

CREATE DATABASE MyAdventureWorks 
    ON (FILENAME = 'C:\Adventureworks\AdventureWorks2012_Data.mdf'), 
    (FILENAME = 'C:\Adventureworks\AdventureWorks2012_Log.ldf') 
    FOR ATTACH; 

Come puoi vedere i miei file di database si trovano in una cartella chiamata Adventureworks.

7
Roger

Errore 5 - Accesso negato - Viene dai vecchi tempi di DOS. Fondamentalmente, si tratta di un ACL - errore dell'elenco di controllo di accesso. 

Puoi mettere i database ovunque ti piaccia a patto che l'account SQL SERVER SERVICE abbia accesso!

Non importa chi sei connesso come, è l'account di servizio che ha bisogno di accedere alla directory e ai file.

Non è necessario eseguire SSMS come amministratore. Ho collegato i database tutto il tempo senza questo passaggio.

6
CRAFTY DBA

Basta rimuovere il file di registro, se si sta creando il database per la prima volta allegando, che potrebbe aiutarti.

Stavo cercando di creare un database allegando e ho continuato a ottenere uno screenshot simile

enter image description here

Grazie all'articolo che ho trovato e ho appena dovuto rimuovere il log, era ovvio, ma MS non ha offerto di non mostrare da soli per i nuovi database. Esperienza molto brutta, non sono sicuro se è simile per i prodotti con licenza server SQL.

http://exacthelp.blogspot.in/2012/12/unable-to-open-physical-file-operating.html

6
user_v

Passaggi per collegare il database AdventureWorks2012 al database MSSQL locale:

Soluzione 1: Se si dispone di spazio sufficiente in C:\Drive in Windows e si desidera creare il database in C:\Drive

  1. Posizionare AdventureWorks2012_Data.mdf e AdventureWorks2012_log.ldf nella seguente posizione C:\Programmi\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA

2.Fare clic su "Database" nell'Explorer dell'oggetto e selezionare "Allega"

3. Nella finestra di dialogo Allega database, fare clic sul pulsante "Aggiungi" nel database per allegare: campo.

  1. Passare al percorso file MDF C:\Programmi\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\AdventureWorks2012_Data.mdf e Fare clic su 'OK' nella parte inferiore della finestra di dialogo 'Allega database' .

5.Ora il database 'AdventureWorks2012' viene creato in SQL Sever.

Soluzione 2: Se non si dispone di spazio sufficiente in C:\Drive in Windows

1.Collegare al server locale selezionando il nome del server XXX\SQLEXPRESS e Autenticazione - 'Autenticazione Windows'

2.Fare clic su "Database" nell'Explorer dell'oggetto e selezionare "Allega"

3. Nella finestra di dialogo Allega database, fare clic sul pulsante "Aggiungi" nel database per allegare: campo.

  1. Passare al percorso file MDF per es. F:\AdventureWorks2012_Database\AdventureWorks2012_Data.mdf e fare clic su "OK" nella parte inferiore della finestra di dialogo "Allega database".

  2. Questo genererà il seguente messaggio di errore: 'Si è verificato un errore durante il collegamento dei database. Fare clic sul collegamento ipertestuale nella colonna Messaggio per i dettagli. '

  3. La soluzione è: 

    i) Fare clic con il tasto destro sulla cartella AdventureWorks2012_Data, selezionare Proprietà.

    ii) fare clic sulla scheda "Sicurezza"

    iii) Selezionare Utenti (xxx\Utenti) nella sezione "Gruppi o nomi utente:"

    iv) Fai clic sul pulsante "Modifica"

    v) Seleziona Utenti (xxx\Utenti) nel 'Gruppo o nomi utente:' nel popup,

    vi) Selezionare la casella di controllo "Controllo completo" nella sezione "Autorizzazioni per gli utenti".

    vii) Fare clic su ok e ok.

  4. Ora torna alla schermata Allegati database di SQLsevers, fare clic sul pulsante "Aggiungi" nel database per allegare: campo.

  5. Passare al percorso file MDF ad es. F:\AdventureWorks2012_Database\AdventureWorks2012_Data.mdf e fare clic su "OK" nella parte inferiore della finestra di dialogo "Allega database".

  6. Ora il database "AdventureWorks2012" è stato creato in SQL Sever.

6
Dorababu G

Mi rendo conto che questa è una vecchia domanda, ma per me c'erano due requisiti per collegare un database outside la cartella predefinita:

  1. Dovevo concedere esplicitamente l'accesso completo dell'utente (me) alla cartella (nonostante avessi già le autorizzazioni implicite)
  2. Ho dovuto concedere NT SERVICE\MSSQL$INSTANCENAME accesso completo alla cartella

Presumo che il # 1 non sia richiesto se il processo (SSMS) è elevato.

2
Richard Szalay
  1. Allegare il database.
  2. Nella finestra di dialogo, seleziona il percorso del file di AdventureWorks.
  3. Aggiungi il file.
  4. Eliminare il file di registro, poiché il server SQL ne creerà uno più tardi una volta collegato il database.
2
Rupinder Sood

Grazie per i suggerimenti precedenti. Non è necessario spostare i file di database nella directory del server SQL o eliminare il file di registro del database. Invece, si concede semplicemente l'autorizzazione Controllo completo per entrambi i file .MDF e .LDF per gli utenti autenticati. In questo modo collego correttamente entrambi i database di esempio AdventureWorks2012 e AdventureWorksLT2012 in SQL Server Management Studio (SSMS).

0
Yong Yuan

Ho risolto questo problema scaricando le opere di Adventure da questo sito 

http://msftdbprodsamples.codeplex.com/downloads/get/723031

Nota quando si scarica un'avventura funziona la cartella Zip, assicurarsi che il file sia aggiunto con _data e.g AdventureWorks2012_Data.Zip poiché questo file contiene sia i file .mdf che .ldf.

Dopo averlo scaricato, estrai il contenuto della cartella in questo url sul tuo computer C:\Programmi\Microsoft SQL Server\MSSQL11. ***\MSSQL\DATA. Nel server SQl, accedere a Esplora oggetti e fare clic con il tasto destro del mouse sui database per allegare il database. Nella finestra di dialogo Allega, selezionare Adve ******** .mdf. Tutto ciò che dovrebbe andar bene da qui.

Spero che questo possa essere d'aiuto.

0
Friedrich

Ho avuto lo stesso problema durante il tentativo di creare un nuovo database con impostazioni personalizzate da ASP.NET MVS e ho perso alcune ore per risolverlo. Finalmente la mia soluzione era quella di entrare nelle opzioni di cartella/sicurezza della mia cartella App_Data. Quindi ho aggiunto un account "utenti autenticati" e gli ho dato il controllo completo. E questo era tutto. La mia applicazione funziona bene ..

0
Kiril Dobrev

basta aggiungere l'utente corrente alla scheda di sicurezza con il pieno controllo e rieseguire la query atttach

0
TrayS

Fornire l'account di servizio SQL 'NT SERVICE\MSSQLSERVER' "Controllo completo" dei file del database

Se hai accesso ai file/cartelle del server puoi provare questa soluzione che ha funzionato per me:

SQL Server 2012 su Windows Server 2008 R2

  1. Fare clic con il pulsante destro del mouse sul file o sulla cartella del database (mdf/ldf) e selezionare "Proprietà".
  2. Seleziona la scheda "Sicurezza" e fai clic sul pulsante "Modifica".
  3. Fai clic sul pulsante "Aggiungi".
  4. Immettere il nome dell'oggetto da selezionare come "NT SERVICE\MSSQLSERVER" e fare clic sul pulsante "Controlla nomi".
  5. Selezionare MSSQLSERVER (RDN) e fare clic due volte sul pulsante "OK".
  6. Assegna questo account di servizio "Controllo completo" al file o alla cartella.
  7. Tornato in SSMS, fare clic destro sul database e selezionare "Proprietà".
  8. In "Opzioni" scorri verso il basso fino alla sezione "Stato" e modifica "Database sola lettura" da "Vero" a "Falso".
0
SimplyInk

in realtà è abbastanza facile. Basta rinominare i file . Non c'è bisogno di spostare, aggiungere le autorizzazioni eseguite come qualsiasi ...

0
user763539

NOTA: Windows 7 Pro, SQL 2012

Dopo aver usato DiskManager.msc, ho dovuto aggiungere machine_name\SERVICE con il pieno controllo di entrambi i file .mdf e .ldf.

Il mio computer portatile è Borris quindi: 

  1. Fare clic con il tasto destro del mouse sul nome del file -> proprietà fare clic sulla scheda SICUREZZA, quindi su Autorizzazioni -> aggiungere e quindi controllare i nomi digitare i servizi.
  2. Per tornare indietro premi ok, applica, ok, ok, ok e ok.

Non sono sicuro del motivo per cui cambiare le lettere di unità resettare i miei permessi, ma ha fatto su Windows inserire qui la descrizione dell'immagine