Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

qual è il problema con AttachDbFilename

Utilizzo di User Instance significa che SQL Server sta creando una copia speciale di quel file di database per l'utilizzo da parte del programma. Se hai due programmi diversi che utilizzano la stessa stringa di connessione, ottengono due copie completamente diverse del database. Questo porta a un lotto di confusione, poiché le persone testeranno l'aggiornamento dei dati con il proprio programma, quindi si collegheranno a una copia diversa del proprio database in Management Studio e si lamenteranno del fatto che l'aggiornamento non funziona. Questo li invia attraverso una serie imperfetta di passaggi di caccia all'oca che cercano di risolvere il problema sbagliato.

Questo articolo approfondisce l'utilizzo di questa funzione, ma presta attenzione alla prima nota:l'User Instance funzione è stata ritirata . In SQL Server 2012, le alternative preferite sono (in questo ordine, IMHO):

  1. Crea o collega il tuo database a un'istanza reale di SQL Server. La stringa di connessione dovrà quindi solo specificare il nome dell'istanza, il nome del database e le credenziali. Non ci sarà alcuna confusione poiché Management Studio, Visual Studio e i tuoi programmi si connetteranno tutti a un'unica copia del database.

  2. Usa SqlLocalDb per lo sviluppo locale. Credo di averti indicato questo articolo ieri:"Guida introduttiva a SQL Server 2012 Express LocalDB".

  3. Utilizzare SQL Server Compact. Questa opzione mi piace di meno perché la funzionalità e la sintassi non sono le stesse, quindi non ti fornirà necessariamente tutte le funzionalità che alla fine vorrai distribuire. Anche l'edizione compatta è deprecata, quindi c'è.

Ovviamente se stai usando una versione SqlLocalDb non è un'opzione, quindi dovresti creare un database reale e usarlo in modo coerente. Cito solo l'opzione Compatta per completezza - penso che possa essere un'idea quasi pessima come usare AttachDbFileName .

MODIFICA: Ho bloggato su questo qui:

  • Cattive abitudini:utilizzo di AttachDBFileName