Un tentativo di colbind un database con nome automatico per il file … database1.mdf non è riuscito

Sto riscontrando il seguente errore durante il debug del mio sito Web di Visual Studio 2010:

Un tentativo di colbind un database con nome automatico per il file C: \ Users … \ Desktop \ Dpp2012New \ App_Data \ dppdatabase.mdf non riuscito. Esiste un database con lo stesso nome o il file specificato non può essere aperto oppure si trova sulla condivisione UNC.

Descrizione: si è verificata un’eccezione non gestita durante l’esecuzione della richiesta Web corrente. Si prega di rivedere la traccia dello stack per ulteriori informazioni sull’errore e sulla sua origine nel codice.

Dettagli eccezione: System.Data.SqlClient.SqlException: tentativo di colbind un database con nome automatico per il file C: \ Users … \ Desktop \ Dpp2012New \ App_Data \ dppdatabase.mdf non riuscito. Esiste un database con lo stesso nome o il file specificato non può essere aperto oppure si trova sulla condivisione UNC.

Ecco la mia stringa di connessione dal mio web.config :

     

E accedo dal mio sito web come:

 Dim connectionString As String = ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString 

Lo stacktrace mostra la riga di errore come:

  Dim conn As New SqlConnection(connectionString) Dim dr As SqlDataReader conn.Open() 'This is the error line as per stacktrace 

Ho dato le autorizzazioni necessarie alla cartella sopra, quindi non può essere il problema “o il file specificato non può essere aperto”. Se guardiamo tutti i post relativi allo stesso errore in questo forum, è evidente la profondità di questo errore. Tuttavia, nessuna delle soluzioni risolve il mio problema. Alcune delle risorse che ho provato sono:

  1. http://weblogs.asp.net/scottgu/archive/2005/08/25/423703.aspx
  2. http://blogs.msdn.com/b/webdevelopertips/archive/2010/05/06/tip-106-did-you-know-how-to-create-the-aspnetdb-mdf-file.aspx
  3. http://forums.asp.net/t/1033225.aspx

Attendo con impazienza una soluzione.

Ho avuto anche questo problema ed è stato un dolore. Ho configurato la mia stringa di connessione e sono riuscito a risolvere il problema. Nella stringa di connessione ho sostituito il valore | DataDirectory | \ dbfilename.mdf per la proprietà AttachDbFilename , con il percorso del file. | DataDirectory | può essere utilizzato solo se il file di database si trova nella cartella App_Data all’interno dello stesso progetto.

Quindi, modificando la proprietà AttachDbFilename sul percorso diretto del file mdf, risolto il problema.

AttachDbFilename = C: \ MyApp \ App \ DAL \ db.mdf

Spero che questo funzioni per te.

Prova a creare la stringa di connessione come di seguito:

   

Funziona per me.

Ho avuto un errore simile, ma utilizzando una connessione configurata in codice, piuttosto che un file di configurazione. La soluzione per me era semplicemente aggiungere la parte “Initial Catalog = MyDatabase”. Il mio codice ora sembra …

 DbConnection connection = new SqlConnection(String.Format(@"Data Source=.\SQLEXPRESS; Integrated Security=SSPI; AttachDbFilename={0}; User Instance=True; Initial Catalog=IPDatabase;", Location)); 

La posizione è un percorso completo di un file mdb, che non deve ancora esistere.

Uno degli errori più fastidiosi durante lo sviluppo di app Web in .Net. Ho avuto questo problema su un progetto che stavo facendo un anno fa. Questo è ciò che ha funzionato per me: ho eseguito l’accesso con un account sa a SQL Management Studio e ho collegato il database all’object explorer (Database -> Clic destro -> Allega). Poi ho aperto Security-> Logins -> [myWindowsUsername] e modificato la scheda User Mappings, dando i diritti di dbowner al database allegato.

Sono sicuro che puoi fare queste cose senza Management Studio, con i comandi della console, ma non sono così bravo con T-SQL e non posso darti consigli su questo.

controlla il tuo file di configurazione web, potrebbe esserci più di una stringa di connessione con lo stesso nome

Il mio era un progetto in codice EF e si presenta quando il file è stato cancellato. L’esecuzione Update-Database dalla console di Gestione pacchetti rende il database valido.

L’errore è stato corretto per me dopo averlo modificato

 ConfigurationManager.ConnectionStrings[0].ConnectionString 

a questa

 ConfigurationManager.ConnectionStrings["myconnection"].ConnectionString 

Ho cambiato la cartella di installazione dai file di programma alla directory C mentre sto installando l’app. allora il mio problema è risolto

beh, penso che la ragione sia che nella directory del database, contiene un file .mdf che ha lo stesso nome. Quindi la cosa migliore è dare il percorso completo è sufficiente sostituire AttachDbFilename. basta semplicemente ottenere il fullpath del file di database e assegnarlo a AttachDbFilename che si trova nel file app.config.

Nella maggior parte dei casi, il progetto di test unitario è separato dal progetto principale. Ciò causa la stringa di connessione generata come non valida in quanto non riesce a trovare una cartella app_data, se il db è locale alla soluzione.

Puoi semplicemente sostituire | DataDirectory | con un percorso relativo al db nel progetto principale se è necessario connettersi ad esso dal progetto di test dell’unità.

Controlla il percorso per il tuo database sulla stringa di connessione. Ho lo stesso messaggio di errore e in seguito ho scoperto che il problema è un percorso errato.

  

Ho provato la portabilità di mdf nella mia applicazione, quindi l’ho usato

  public DbContext IoDatabase() { var directory = System.IO.Directory.GetCurrentDirectory(); var connectionString = @"Data Source=(localdb)\mssqllocaldb;AttachDbFilename=" + directory + "\\App_Data\\ITIS.mdf;Integrated Security=True;Connect Timeout=30;"; return new NerdDinners(connectionString); } 

con nerdDinners, non riesco a ricordare dove l’ho trovato, l’essere

 public class NerdDinners : DbContext { public NerdDinners(string connString) { Database.Connection.ConnectionString = connString; } } 

Quindi posso usare il tipo restituito come DbContext.

La cosa principale che ho incontrato è che GetCurrentDirectory () ottiene il percorso del file compilato, non il percorso del file di progetto, quindi la distribuzione deve essere impostata su GetCurrentDirectory e il mdf deve essere copiato su compilazione, non fare riferimento al valore effettivo di App_Data. Includi il tuo mdf nel tuo progetto e vai su di esso. Imposta la copia nella directory di output.

Ho avuto lo stesso problema con EF. La soluzione del percorso assoluto ha funzionato. Ma non è una buona soluzione se vuoi spostare il tuo programma in una nuova posizione. Per me questo era il problema.

  1. VS cerca il file mdf nella cartella di debug
  2. C’è un file .mdf nella cartella del progetto, a volte VS sincronizza i due file
  3. Per qualche motivo il file .mdf non è stato sincronizzato in Debug

La mia soluzione:

  1. Copia il file .mdf e .ldf in una cartella temporanea
  2. Crea una connessione per esso in vs / server explorer
  3. Quando si aggiunge ADO.NET, utilizzare la nuova connessione
  4. VS offre di copiare il file .mdf nella cartella del progetto, accettarlo
  5. Ora il file .mdf apparirà anche nella cartella di debug
  6. Eliminare la connessione per la cartella temporanea, crearne una nuova nella cartella del progetto

quello che ho trovato finora per risolvere il problema, se si crea un file mdf nel modo seguente, funzionerebbe perfettamente per Visual Studio.

Fare clic con il tasto destro del mouse sulla connessione dati nel server Explorar-> aggiungi connessione-> selezionare il file di database Microsoft SQL Server e scegliere il nome del database e selezionare OK. Quindi questo problema non si presenta. Segui il video: link di YouTube

Ho avuto lo stesso problema, e penso di aver capito. Nella stringa di connessione assicurati che la stringa di connessione assomigli a questo:

     

Ora, il primo

  

è ciò che appare di default in web.config. Lasciare invariato e aggiungere un’altra stringa di connessione

   

con i tuoi parametri. Questo sta funzionando per me. Spero che sia d’aiuto.