Accesso negato durante il collegamento di un database


147

Sto usando l'edizione per sviluppatori di SQL Server 2008. Stavo cercando di collegare il database AdventureWorks2008.

Quando ho provato a collegarmi, ho ricevuto un errore "Accesso negato". Secondo il registro eventi, veniva dall'O / S:

Apertura non riuscita: impossibile aprire il file D: \ ProjectData \ AdventureWorks \ AdventureWorksLT2008_Data.mdf per il numero di file 0. Errore del sistema operativo: 5 (accesso negato.).

Ho pensato "Problema NTFS", ma System (e I) hanno modificato l'accesso a entrambi i file.

Ho scoperto che posso collegare correttamente il database se eseguo l'accesso come sa, ma il mio account utente non funzionerà.

Sono un membro del gruppo degli amministratori locali sulla mia macchina e ricopro il ruolo di amministratore di sistema nell'istanza di SQL Server.

Qualche idea sul perché dovessi essere registrato come sa?


Il file MDF è crittografato per caso?
Brettski,

No, la vera curiosità per me è che funziona benissimo se accedo come sa (usando Management Studio), ma non funziona se uso il mio account di amministratore locale. Il mio account è un amministratore, un amministratore di dominio, ed è l'account con cui ho effettuato l'accesso quando ho installato SQL Server (durante l'installazione c'era un'opzione per rendere il mio account corrente un amministratore di sistema, e l'ho fatto).
JMarsch,

1
Ecco come funziona UAC in W7, nessuna sorpresa.
Al Kepp,

@AlKepp No, non una cosa UAC. Accedere semplicemente come corregge (account del server SQL, non ha nulla a che fare con UAC) il problema. Inoltre, solo essendo un membro del gruppo degli amministratori locali, ottengo i miei permessi - non devo elevarmi per far funzionare le mie credenziali AD.
JMarsch,

Risposte:


162

Esegui SQL Server Management Studio come amministratore. (tasto destro-> esegui come amministratore) che si è preso cura di tutte le stranezze nel mio caso.

SQL SRV EXPRESS 2008 R2. Windows 7


5
Eseguire Management Studio come amministratore NON ha funzionato per me. Questo errore si verifica quando si tenta di avviare il servizio Windows.
nuzzolilo,

9
L'esecuzione come amministratore è il primo passo. Il secondo passo è accedere a SQL Server tramite l'autenticazione di Windows. (Questo metodo ha funzionato per me!)
Furkan Ekinci,

3
Ha funzionato anche per me. Non posso esprimere a parole quanto stancanti e frustranti siano i prompt e gli errori di autorizzazione su Windows. SONO UN AMMINISTRATORE!
David Masters,

Ha funzionato anche per me. All'inizio non pensavo che avrebbe funzionato perché SSMS è solo un client UI. Ho pensato che il servizio fosse eseguito come amministratore. Ma eseguire SSMS come amministratore è sufficiente.
Luke Vo,

2
Ha funzionato anche per me. SQL Server 2019, SSMS 18.4
Ryan Thomas

105

Grazie per tutti i commenti. Alcuni di voi hanno contribuito a guidarmi alla risposta. Ecco cosa ho trovato:

Era un problema di autorizzazione NTFS e non un problema SQL. Inoltre, sembra un tipo di bug (ed è ripetibile).

Il problema: l'account che stavo usando aveva il pieno controllo delle autorizzazioni NTFS per i file mdf e ldf. Tuttavia, aveva quelle autorizzazioni tramite l'appartenenza al gruppo (il gruppo degli amministratori locali aveva le autorizzazioni e il mio account è un membro degli amministratori locali). (Ho verificato le autorizzazioni)

Se provo a fare il collegamento, connettermi a SQL Server come me (dove mi trovo nel gruppo degli amministratori), non riesce con il problema NTFS.

Tuttavia, se concedo le stesse autorizzazioni di file che il gruppo di amministratori locali ha direttamente sul mio account di dominio, posso collegarlo senza problemi.

(oh, e sì, ho controllato i gruppi locali su questa macchina e ho verificato che il mio account di dominio è effettivamente un membro del gruppo admin locale).

Quindi, sembra che l'errore si verifichi perché un po 'di codice (in SQL Server o Management Studio) verifica le autorizzazioni in possesso dell'account utente, ma non arriva al punto di controllare le autorizzazioni di gruppo che l'account utente eredita.

Mi sembra strano, ma posso riprodurlo più e più volte, quindi ho concluso che è la risposta.

Aggiornamento: ho segnalato questo come un bug: https://connect.microsoft.com/SQLServer/feedback/details/539703/access-denied-attaching-a-database-when-permissions-are-inherited


104
Se, come me, stai utilizzando Windows 7, dovrai eseguire SQL Server Management Studio come amministratore per evitare questo errore.
Antony,

4
Riprodotto su Win7 Pro utilizzando SS2008 Express. Stesso problema per sqlcmd e SSMS. == Meldung '5120', Ebene '16', Status '101', Server 'DAGO \ SQLEXPRESS', Zeile 1 - 'Die physische Datei' D: \ data \ mssql \ drei.mdf 'kann nicht geöffnet werden. Betriebssystemfehler 5: '5 (Zugriff verweigert) == Concedere l'accesso completo all'utente (che è un membro del gruppo di amministratori locali, che ha accesso) risolve il problema. Inoltre, eseguendo sqlcmd (o SSMS, suppongo) come amministratore non produce questo errore.
Lumi,

1
Anthony Highsky ha la risposta. Devo solo essere sicuro di eseguire Management Studio come amministratore.
James,

Stesso problema e soluzione per me. 2008R2, Win 7, ecc. Mi sono appena aggiunto esplicitamente all'elenco di sicurezza e ha funzionato. Suppongo che SQL Server possa leggerli, una volta collegati, ma non sotto le mie credenziali durante il collegamento?
Andrew Backer,

4
Eseguire Management Studio come amministratore NON ha funzionato per me. Questo errore si verifica quando si tenta di avviare il servizio Windows.
nuzzolilo,

20

Vorrei aggiungere ulteriori informazioni alle risposte che sono state pubblicate.

Prestare attenzione quando si stacca il database perché l' utente di Windows in cui si è effettuato l'accesso diventa l'unico utente con autorizzazioni per il file .mdf! Le autorizzazioni originali del file .mdf che includevano l'utente SQLServerMSSQLUser$<computer_name>$<instance_name>e l'account Administrators vengono sovrascritte da qualsiasi utente di Windows in cui si è effettuato l'accesso (non utente del server sql). Boom, tutte le autorizzazioni sono andate proprio così. Quindi fai come hanno già detto gli altri e fai clic con il pulsante destro del mouse sul file .mdf e ricontrolla le autorizzazioni.

Ho riscontrato questo problema perché ho usato SSMS per connettermi al database (non importa quale account del server SQL) e ho rimosso il database. Dopo averlo fatto, il mio utente di Windows è stato l'unico a disporre delle autorizzazioni per il file .mdf. Quindi, più tardi, quando ho provato a collegare il db utilizzando l'account sa, è stato generato l'errore "Accesso negato".

Per mantenere intatte le autorizzazioni originali, è necessario portare offline il database, quindi scollegarlo, quindi collegarlo in questo ordine in questo modo:

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
Grazie per questo! Penso che sia molto più facile farlo bene se si è anche connessi usando un account autenticato di SQL Server con privilegi serveradmin.
William Rose,

Sfortunatamente, questo non mi aiuta se ho originariamente creato il database come 'sa' anziché come utente Windows
David Gardiner

"Fare attenzione quando si stacca il database". Di 'a SSMS di stare attento. I miei problemi si sono verificati perché utilizzando SSMS il comando Copia database non è riuscito a lasciarmi nella città dell'asse senza alcuna spiegazione
Alan Macdonald,

18

Aggiungi l'autorizzazione alla cartella in cui si trova il tuo .mdffile.

Controlla questo nome: NT Service\MSSQLSERVER

E cambia il Locationnome del tuo server.


5
Per trovare il nome esatto conto, dal momento che può variare da caso a caso, eseguire questo: SELECT servicename, service_account FROM sys.dm_server_services.
Arve Systad,

13

Questo problema è causato da Controllo account utente (User Account Control), non è vero? Sebbene il tuo account utente sia un membro del gruppo Administrators, l'UAC in Windows 7 non ti consente di fare cose da amministratore a meno che tu non esegua programmi "come amministratore". Non è un vero bug in SQL Server o Management Studio o altro. (Anche se potrebbe conoscere il problema e chiederti autorizzazioni elevate invece di lamentarti "errore 5".)


11

Esegui SQL Server Management Studio come amministratore. (tasto destro-> esegui come amministratore) ha funzionato per me con Windows 7 - SQL Server 2008 R2


1
Questa risposta dovrebbe essere votata. L'esecuzione di SSMS come amministratore è una soluzione che replica questa risposta. Microsoft segnala questo come "comportamento previsto" qui: link
FreeText

Non è la stessa della risposta di MandoMando?
mortb

10

Un database SQL2005 può essere collegato in questo modo in Windows 7:

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

E quindi il database collegato è stato completato correttamente.


Questo ha lavorato con SQL Server 2016 Management Studio 2008 R2 su Windows 10 :)
par

9

Quando si accede come sa(o qualsiasi account SQL Server), si sta funzionando come account del servizio SQL Server, quando si accede come te, si dispone delle autorizzazioni del proprio account. Per qualche motivo non hai l'accesso ai file appropriato ma l'account del servizio lo fa.


Il problema NTFS è stata la prima cosa che ho pensato anch'io, ma questo non sembra essere il problema: sono un membro del gruppo degli amministratori locali e ho verificato che gli amministratori hanno autorizzazioni di "controllo completo" sui file mdf e ldf . Inoltre, sono il proprietario dei file: avevo appena creato una directory e copiato personalmente i file mdf / ldf nella loro posizione.
JMarsch,

@JMarsch: @Nick sta dicendo che 'sa' ha una serie di DIRITTI SQLSERVER - non diritti NTFS - che il tuo account non ha.
Trevoke,

@Trevoke: sono con te. In tal caso, quali diritti dovrei assegnare al mio account utente? (Sono già assegnato al ruolo di amministratore di sistema)
JMarsch

1
Vecchia risposta, questa, ma per persone come me cinque minuti fa: è possibile trovare il nome utente del servizio esatto eseguendoSELECT servicename, service_account FROM sys.dm_server_services
Arve Systad

6

Ho trovato questa soluzione: fare clic destro sulla cartella in cui si memorizza il file .mdf -> fare clic su Proprietà -> selezionare la scheda Sicurezza, fare clic su Modifica ... e dargli il controllo completo. Spero che questo ti aiuti!


5

L' sautente utilizza account NTFS SQLServerMSSQLUser$<computer_name>$<instance_name>e SQLServerSQLAgentUser$<computer_name>$<instance_name>per accedere ai file del database. Potresti provare ad aggiungere autorizzazioni per uno o entrambi questi utenti.

Non so se risolva il tuo problema poiché dici che non hai problemi con l' sautente, ma spero che ti aiuti.


5

Con me - In esecuzione sulla finestra 8 - Fare clic su SQL Server Manager Studio -> Esegui con admin. -> allegare senza problemi


5

può essere risolto facilmente ma radicalmente, basta andare nella cartella in cui è stato memorizzato il file mdf . seleziona file-> tasto destro del mouse -> fai clic su proprietà e concedi le autorizzazioni complete al file per la sicurezza dell'utente connesso .


3

Ogni volta che mi sono imbattuto in questo problema è stato quando ho tentato di collegare un database che si trova in una directory diversa dalla directory del database predefinita che è impostata in SQL Server.

Consiglio vivamente che, invece di eseguire il jack con autorizzazioni su varie directory e account, è sufficiente spostare il file di dati nella directory che il server sql prevede di trovarlo.


In molte situazioni, sarei d'accordo con il tuo punto, ma con SQL Server, spesso vuoi essere in grado di individuare i tuoi database su diversi mandrini o volumi per la scalabilità. In effetti, è una pratica comune mettere il registro delle transazioni su un mandrino separato dal database al fine di migliorare il throughput delle transazioni.
JMarsch,

@JMarsch: Sì. Le directory sono effettivamente configurabili tramite la scheda Proprietà server> Impostazioni database per dati predefiniti e posizioni dei registri ...
NotMe

Copre le impostazioni predefinite, ma sono solo le impostazioni predefinite. È del tutto accettabile inserire dbs altrove, e non è nemmeno così insolito se il tuo server gestisce più di 1 database utilizzato attivamente.
JMarsch,

Ho lo stesso problema anche con la directory del server sql predefinita: c: \ Programmi \ Microsoft SQL Server \ MSSQL10_50.SPATIAL_IM \ MSSQL \ DATA \ mydb.mdf su win7.
goku_da_master,

3

Volevo solo aggiungere anche queste informazioni.

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

Soluzione

Questo errore viene visualizzato perché due accessi diversi hanno eseguito le operazioni di scollegamento e collegamento. Quindi i file, quando staccati, erano di proprietà del primo accesso, ma l'allegato non è riuscito perché l'accesso utilizzato non era il proprietario dei file mdf e ldf.

Quando scolleghiamo i file di database, il proprietario diventa la persona che ha eseguito il comando di scollegamento, quindi per risolvere il problema dobbiamo modificare o aggiungere l'altro login come proprietario dei file mdf e ldf.

Fare clic con il tasto destro del mouse sul file "nomefile.mdf" e selezionare le proprietà per verificare le autorizzazioni del file mdf. Qui possiamo vedere che solo un account ha l'autorizzazione per il file "nomefile.mdf" perché era l'account utilizzato per staccare il database.

Per risolvere questo problema, fai clic sul pulsante Aggiungi ... per aggiungere l'altro accesso o qualsiasi altro accesso necessario e dare l'accesso completo al controllo. Dovresti farlo anche per il file "ldf". Dopo aver completato questa attività, fare clic sul pulsante OK. (Nota per le altre versioni del sistema operativo potresti avere un'opzione Modifica, fai clic prima su questo e poi vedrai l'opzione Aggiungi ...)


Ho modificato la mia connessione in SSMS in modo che corrisponda all'utente che ha eseguito il distacco e sono stato in grado di eseguire l'allegato.
Glitzsfa,

2

Per quello che vale per chiunque abbia la particolare variazione di questo problema che ho avuto:

  • SQL Express 2008
  • Visual Studio 2010 Premium

Tramite il menu di scelta rapida della cartella App_data avevo creato un database SQL Express per scopi di debug. La stringa di connessione (utilizzata da NHibernate) era la seguente:

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

Questo mi ha dato lo stesso errore "Accesso negato" sul file di database. Ho provato a dare a vari utenti il ​​pieno controllo della cartella e dei file, a un certo punto anche "Tutti". Nulla ha aiutato, quindi ho rimosso di nuovo le autorizzazioni aggiunte.

Ciò che alla fine ha risolto è stato aprire Esplora server in Visual Studio, quindi connettersi a MDF e staccarlo di nuovo. Dopo aver fatto ciò, la mia app Web poteva accedere al database correttamente.

PS. I crediti vanno a questo post sul blog che ho trovato mentre cercavo su Google questo particolare problema, innescando l'idea di collegare / scollegare il database per risolvere il problema.


2

Ho spostato un mdf del database dalla cartella Dati predefinita nella mia cartella asp_data asp.net e ho riscontrato questo problema nel tentativo di ripristinare il database online.

Ho confrontato le impostazioni di sicurezza degli altri database di file nella posizione originale con i file spostati e ho notato che a MSSQL $ SQLEXPRESS non sono state assegnate le autorizzazioni ai file nella loro nuova posizione. Ho aggiunto il controllo completo per "NT SERVICE \ MSSQL $ SQLEXPRESS" (deve includere quel servizio NT) e si è collegato perfettamente.

Sembra che la cartella Data originale abbia queste autorizzazioni e che i file la ereditino. Sposta i file e le interruzioni dell'eredità ovviamente.

Ho controllato il file mdf di un altro progetto che ho creato direttamente nella sua cartella app_data. non dispone delle autorizzazioni MSSQL $ SQLEXPRESS. Hmmm. Mi chiedo perché a SQL Express piaccia uno ma non l'altro?


Questa soluzione ha funzionato per me su Windows 10 e SQL Server 2017 quando si sposta un file di registro su un disco separato. Nel mio caso il nome utente era "NT SERVICE \ MSSQLSERVER"
John Hanley

1

Sembra autorizzazioni NTFS. Di solito significa che il tuo account del servizio SQL Server ha accesso in sola lettura al file (tieni presente che SQL Server utilizza lo stesso account del servizio per accedere ai file del database indipendentemente da come esegui l'accesso). Sei sicuro di non aver modificato le autorizzazioni della cartella tra l'accesso come te stesso e l'accesso come sa? Se ti stacchi e riprovi, ha ancora lo stesso problema?


Nel mio caso, no - l'ho ripetuto volte serverali per essere sicuro. Il problema era che il mio account aveva accesso ai file solo attraverso un livello di riferimento indiretto: ero un membro del gruppo Domain Admin. L'amministratore di dominio era un membro del gruppo degli amministratori locali sulla macchina e gli amministratori locali (e il sistema) avevano il pieno controllo della cartella. (quindi c'erano 2 livelli di indirizzamento di gruppo). Se avessi assegnato le autorizzazioni direttamente a me stesso, avrebbe funzionato, se le avessi rimosse, avrei comunque potuto copiare / eliminare i file da Explorere, ecc., Ma SQL Server non poteva caricarli.
JMarsch,

Quando si tenta di collegare il database. Accedi come Windows authenticated userci aiuterà a superare i permessi sui file di database. (In questo caso, istanza di MS SQLServer sul disco con sistema operativo Windows).
Fai Nhu Vy il

1

Ho avuto lo stesso problema durante il collegamento di un database. Non era un problema di SQL, era un problema di account. Vai al pannello di controllo / Impostazioni controllo account utente / Imposta su "non avvisare mai". Infine, riavvia il computer e ha funzionato per me.


1

Ho allegato il file mdf facendo clic con il pulsante destro del mouse sul database e rimuovendo il file di registro AdventureWorks2012_Data_log.ldf nella procedura guidata. Il file mdf è stato inserito nella seguente posizione

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

Il metodo sopra mi ha aiutato a risolvere il problema.


1

Stavo leggendo questa pagina e hanno una frase interessante lì dentro:

Attenzione: sii molto selettivo quando aggiungi utenti a questi ruoli. Ad esempio, sysadmin esegue il mapping su dbo in ogni database ed equivale ad accedere utilizzando l'account sa.

Naturalmente, hanno anche questo:

Autorizzazioni concesse a utenti e ruoli e specifiche del database. Tutte le autorizzazioni sono cumulative ad eccezione di un DENY. Un'autorizzazione negata a livello di utente o a livello di ruolo sostituisce la stessa autorizzazione concessa tramite altre appartenenze ai ruoli, ad eccezione del ruolo predefinito del server sysadmin. (Un amministratore di sistema conserva tutte le autorizzazioni, anche se un ruolo di cui fa parte ha un'autorizzazione DENY.)

Quindi, se sei un amministratore di dominio e nel gruppo "sysadmin" di SQL, il mondo dovrebbe essere il tuo crostaceo.

Naturalmente, secondo Microsoft, dovresti dare una rapida occhiata a queste due pagine:
Link ai prerequisiti del database

Collegamento all'installazione di database

Sei cattivo e stai provando ad attaccarli manualmente :) Seriamente, hai tutti i prerequisiti per il database AdventureWorks2008?
Ho il sospetto che questo sia solo un altro caso strano / limite di Microsoft, ma potrei sbagliarmi.


+1 perché il tuo commento mi ha aiutato a trovare la risposta. Invierò i miei risultati a questa discussione. A proposito (ero "cattivo" a causa di politiche molto strane in cui lavoro - il database di Adventureworks è distribuito come exe. Non riesco a scaricare exe. (Posso scaricare file zip e file MSI, quindi non vedo come il filtro exe fa davvero qualsiasi cosa oltre a mettersi in mezzo, ma quelle sono le regole). Comunque, potrei ottenere i file mdf non elaborati come zip da codeplex, ed è allora che mi sono imbattuto in questa piccola curiosità.
JMarsch

1

inserisci qui la descrizione dell'immagine

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

cambia in FOR ATTACH -> FOR ATTACH_FORCE_REBUILD_LOG

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

Grazie, mi hai salvato la giornata
Shahrokhian

1

Ho ricevuto questo errore come sa. Nel mio caso, la sicurezza del database non aveva importanza. Ho aggiunto a tutti il ​​pieno controllo dei file mdf e ldf e l'allegato è andato bene.


1

Stavo affrontando lo stesso problema in VS 2019. Se qualcuno ancora affronta lo stesso problema, assicurati di avere / fare le seguenti cose:

  1. Dovresti avere installato SQL Express sul tuo m / c
  2. Dovrebbe avere SSDT installato in VS (in VS 2019 - assicurati di controllare questo componente durante l'installazione) per le versioni precedenti - devi aggiungere questo componente esternamente
  3. Aggiungi "Istanza utente = Vero" alla stringa di connessione
  4. Penso che sia facoltativo: apri VS e SQL Express in modalità amministrativa e accedi come amministratore a SQL Express

0

In realtà sono le autorizzazioni NTFS e uno strano bug in SQL Server. Non sono sicuro che la segnalazione di bug sopra riportata sia accurata o possa riferirsi a un bug aggiuntivo.

Per risolvere il problema su Windows 7, ho eseguito SQL Server Management Studio normalmente (non come amministratore). Ho quindi tentato di allegare il file MDF. Nel processo, ho usato l'interfaccia utente anziché incollare nel percorso. Ho notato che il percorso è stato interrotto da me. Questo perché l'utente di MS SQL Server (SQLServerMSSQLUser $ machinename $ SQLEXPRESS) che il software aggiunge per te non dispone delle autorizzazioni per accedere alla cartella (in questo caso una cartella in profondità nelle mie cartelle utente).

Incollare il percorso e procedere comporta l'errore sopra riportato. Quindi - ho concesso all'utente MS SQL Server le autorizzazioni per leggere a partire dalla prima directory da cui è stato negato (la mia cartella utente). Ho quindi immediatamente annullato l'operazione di propagazione perché può richiedere un'eternità e ho nuovamente applicato le autorizzazioni di lettura alla sottocartella successiva necessaria e ho lasciato che si propagasse completamente.

Infine, ho dato all'utente MS SQL Server le autorizzazioni di modifica ai file .mdf e .ldf per il db.

Ora posso collegarmi ai file del database.


0

Se si esegue sql server 2012, è possibile ottenere questo errore tentando di allegare una versione precedente di un file mdf. ex un file mdf da SQL Server 2008.


Penso che quella parte fosse relativamente autoesplicativa. sarebbe bene sapere come risolverlo.
dansan,

0

Ho risolto il problema semplicemente spostando il file .mdf che si desidera allegare alla cartella pubblica, nel mio caso l'ho spostato nella cartella utenti / pubblica. Quindi lo allego da lì senza alcun problema. Spero che questo ti aiuti.


0

Per coloro che non sono stati in grado di risolvere il problema con le altre soluzioni qui, la seguente soluzione ha funzionato per me:

Passare alla cartella "DATA" nell'installazione di SQL Server, fare clic con il pulsante destro, proprietà, scheda sicurezza e aggiungere autorizzazioni di controllo completo per l'utente "SERVIZIO DI RETE".

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

(Il link sopra è per SQL 2005, ma questo ha risolto un'installazione di SQL 2008 R2 per me).

Alcune informazioni aggiuntive: questo problema si è presentato dopo aver sostituito un disco rigido secondario (su cui era installata l'installazione SQL). Ho copiato tutti i file e ripristinato la lettera di unità originale sul nuovo disco rigido. Tuttavia, le autorizzazioni di sicurezza non sono state copiate. Penso che la prossima volta userò un metodo migliore per copiare i dati.


0

Nel mio caso ciò che ha risolto il problema è stato il folowing:

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

Copia il database in un'altra cartella e collega o accedi a SQL Server con "Autenticazione di Windows"

inserisci qui la descrizione dell'immagine


0

Ho avuto lo stesso problema quando ricollegavo il database dopo averlo staccato e spostato i file ldf e mdf dall'unità C a F.

Per risolvere il problema, ho dovuto aggiungere l'entità DIRITTO PROPRIETARIO ad entrambi i file e gli ho dato il pieno controllo su di essi nella scheda Sicurezza della finestra di dialogo Proprietà.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.