2015-04-02 22 views
5

Sto utilizzando LocalDb in un ambiente di test di integrazione, creando un'istanza e eliminando la mia istanza prima e dopo l'esecuzione dei test.Posso eseguire LocalDb "in memoria"

Tuttavia, quando creo un database all'interno della mia istanza, esso scarica comunque le mie tabelle e i dati sul disco. È possibile eseguire LocalDb in modalità "in-memory"? E se sì, come?

+0

Se si utilizza transactioncope - https://github.com/ritterim/automation-sql – ErikEJ

+0

non sono del tutto sicuro di come il collegamento sia utile (ho cercato il codice sorgente per "transazione" ma non ho trovato nulla). I miei test di integrazione comprendono servizi "in corso" che non propagano le transazioni, quindi l'esecuzione dei test all'interno di una singola transazione non sarà di aiuto, ma forse ho frainteso il tuo commento. – Lawrence

risposta

2

No. LocalDB è ancora SQL Server e in SQL Server non esiste il concetto di un database in memoria. Tutti i database sono supportati dal disco, con la cache in memoria posta sopra di essi.

Probabilmente si potrebbe scrivere un passaggio personalizzato nel proprio cablaggio di test per eliminare i database dopo aver completato i test ed eliminare i file di database. Forse è già presente anche se stai usando TFS per le prove di build e test? Ma non c'è nulla in LocalDB per renderlo automatico.

+0

in realtà non è vero che SQL Server non ha memoria con GA di SQL Server 2014, ma ancora non lo è per quanto ne so. http://www.microsoft.com/en-us/server-cloud/solutions/in-memory.aspx –

+1

Non credo che le funzionalità di In-Memory di SQL Server 2014 includano database ** in memoria **. Esistono tabelle ** in memoria **, ma comprendo che anche se tutte le tabelle di un database sono in memoria, il database è ancora supportato da un file con metadati, ecc. –

+0

BTW, grazie per aver corretto l'errore di battitura! –

4

È possibile eseguire i test su un database in un disco RAM. L'ho fatto un po 'di tempo fa e sembrava migliorare le prestazioni dei test di integrazione di un fattore 2 o 3! Questo era su una VM di Windows 7 ospitata su un MacBook Pro con un SSD. La tua fascia sarà probabilmente migliore se hai un disco rigido meccanico.

Poiché SQL Server consente di specificare il file mdf in una stringa di connessione tramite "AttachDbFileName =", è possibile sfruttarlo facendo riferimento a un mdf in un disco RAM.

Il driver di periferica del disco RAM utilizzato era ImDisk, disponibile per Windows a 64 e 32 bit. Le controparti di Linux sono numerose.