Condividi tramite


SQL Server 2012 Express LocalDB

Microsoft SQL Server 2012 Express LocalDB è una modalità di esecuzione di SQL Server Express destinata agli sviluppatori, Con l'installazione del database locale viene copiato un set di file minimo necessario per avviare il Motore di database di SQL Server. Una volta installato il database locale, gli sviluppatori avviano una connessione utilizzando una stringa di connessione speciale. Durante la connessione, l'infrastruttura SQL Server necessaria viene creata automaticamente e avviata, consentendo all'applicazione di utilizzare il database senza attività di configurazione complesse o lunghe. Con Developer Tools gli sviluppatori dispongono di un Motore di database di SQL Server che consente di scrivere e verificare il codice Transact-SQL senza dover gestire un'istanza del server completa di SQL Server. Un'istanza di SQL Server Express LocalDB viene gestita tramite l'utilità SqlLocalDB.exe. SQL Server Express LocalDB deve essere usato al posto della funzionalità dell'istanza utente SQL Server Express deprecata.

Installazione di LocalDB

Il metodo principale di installazione di LocalDB consiste nell'utilizzare il programma SqlLocalDB.msi. LocalDB è un'opzione per l'installazione di qualsiasi SKU di SQL Server 2012 Express. Selezionare LocalDB nella pagina Selezione funzionalità durante l'installazione di SQL Server Express. È possibile un'unica installazione dei file binari di LocalDB per ogni versione principale del Motore di database di SQL Server. È possibile avviare più processi del Motore di database e in tutti verranno utilizzati gli stessi file binari. Un'istanza del Motore di database di SQL Server avviata come LocalDB presenta le stesse limitazioni di SQL Server Express

Descrizione

Nel programma di installazione di LocalDB viene utilizzato il programma SqlLocalDB.msi per installare i file necessari nel computer. Una volta installato, LocalDB è un'istanza di SQL Server Express con cui è possibile creare e aprire database di SQL Server. I file del database di sistema per il database sono archiviati nel percorso locale AppData degli utenti che generalmente è nascosto. Ad esempio C:\Users\<user>\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\LocalDBApp1\. I file del database utente vengono archiviati nel percorso indicato dall'utente, in genere nella cartella C:\Users\<user>\Documents\.

Per altre informazioni su come includere LocalDB in un'applicazione, vedere la documentazione su Visual Studio relativa ai cenni preliminari sui dati locali, allo scenario di creazione di un database SQL Server LocalDB e allo scenario di connessione ai dati in SQL Server LocalDB (Windows Form).

Per ulteriori informazioni sull'API LocalDB, vedere le pagine relative al riferimento all'API dell'istanza di SQL Server Express LocalDB e alla funzione LocalDBStartInstance.

Con l'utilità SqlLocalDb è possibile creare nuove istanze di LocalDB, avviare e arrestare un'istanza di LocalDB, nonché includere opzioni per consentire la gestione di LocalDB. Per ulteriori informazioni sull'utilità SqlLocalDb, vedere Utilità SqlLocalDB.

Le regole di confronto dell'istanza per LocalDB sono impostate su SQL_Latin1_General_CP1_CI_AS e non possono essere modificate. Le regole di confronto a livello di database, di colonna e di espressione sono supportate normalmente. Ai database indipendenti vengono applicate le regole di confronto dei metadati e di tempdb definite da Regole di confronto dei database indipendenti.

Restrizioni

LocalDB non può essere un Sottoscrittore della replica di tipo merge.

LocalDB non supporta FILESTREAM.

LocalDB consente solo code locali per Service Broker.

Un'istanza di LocalDB di proprietà degli account predefiniti, ad esempio NT AUTHORITY\SYSTEM, può avere problemi di gestibilità a causa del reindirizzamento del file system di Windows. Usare invece un account di Windows normale come quello del proprietario.

Istanze denominate e automatiche

LocalDB supporta due tipi di istanze, ovvero istanze automatiche e istanze denominate.

  • Le istanze automatiche di LocalDB sono pubbliche. Vengono create e gestite automaticamente per l'utente e possono essere utilizzate da qualsiasi applicazione. Un'istanza automatica di LocalDB esiste per ogni versione di LocalDB installato nel computer dell'utente. Le istanze automatiche di LocalDB forniscono una gestione continua dell'istanza. Non c'è necessità di creare l'istanza in quanto già funziona. In tal modo è possibile migrare e installare e l'applicazione con facilità in un computer diverso. Se nel computer di destinazione è installata la versione specificata di LocalDB, l'istanza automatica di LocalDB per quella versione è disponibile anche sul computer di destinazione. Le istanze automatiche di LocalDB dispongono di un modello speciale per il nome dell'istanza che appartiene a uno spazio dei nomi riservato. In tal modo si evitano conflitti di nomi con le istanze denominate di LocalDB. Il nome dell'istanza automatica è costituito da un solo carattere v, seguito dal numero di versione del rilascio di LocalDB nel formato xx.x. Ad esempio, v11.0 rappresenta SQL Server 2012.

  • Le istanze denominate di LocalDB sono private. Sono di proprietà di una sola applicazione, responsabile della creazione e della gestione dell'istanza. Le istanze denominate forniscono l'isolamento dalle altre istanze e possono migliorare le prestazioni riducendo la contesa di risorse con altri utenti del database. Le istanze denominate devono essere create in modo esplicito dall'utente tramite l'API di gestione di LocalDB o in modo implicito tramite il file app.config per un'applicazione gestita, sebbene anche l'applicazione gestita possa utilizzare l'API, se desiderato. Ogni istanza denominata di LocalDB dispone di una versione associata di LocalDB che punta al relativo set di file binari di LocalDB. Il nome di un'istanza di LocalDB è composto dal tipo di dati sysname e da un massimo di 128 caratteri. I nomi delle istanze denominate normali di SQL Server invece possono essere solo nomi NetBIOS normali di 16 caratteri ASCII. Nel nome di un'istanza di LocalDB può essere incluso qualsiasi carattere Unicode che sia valido all'interno di un nome file. Un'istanza denominata che utilizza un nome dell'istanza automatica diventa un'istanza automatica.

I diversi utenti di un computer possono avere istanze con lo stesso nome. Ogni istanza è un processo diverso in esecuzione come utente diverso.

Istanze condivise di LocalDB

Per supportare scenari dove più utenti del computer devono connettersi a una sola istanza di LocalDB, LocalDB supporta la condivisione dell'istanza. Il proprietario di un'istanza può decidere di consentire agli altri utenti del computer di connettersi all'istanza. È possibile condividere le istanze automatiche e denominate di LocalDB. Per condividere un'istanza di LocalDB, un utente ne seleziona un nome condiviso (alias). Poiché il nome condiviso è visibile a tutti gli utenti del computer, questo nome condiviso deve essere univoco nel computer. Il nome condiviso di un'istanza di LocalDB ha lo stesso formato dell'istanza denominata di LocalDB.

Solo un amministratore del computer può creare un'istanza condivisa di LocalDB. La condivisione di un'istanza di LocalDB può essere annullata da un amministratore o dal proprietario dell'istanza condivisa di LocalDB. Per condividere e annullare la condivisione di un'istanza di LocalDB, utilizzare i metodi LocalDBShareInstance e LocalDBUnShareInstance dell'API LocalDB o le opzioni di condivisione e annullamento della condivisione dell'utilità SqlLocalDb.

Avvio e connessione a LocalDB

Connessione all'istanza automatica

Il modo più semplice per usare LocalDB è connettersi all'istanza automatica dell'utente corrente tramite la stringa di connessione "Server=(localdb)\v11.0;Integrated Security=true". Per connettersi a un database specifico tramite il nome file, usare una stringa di connessione simile a "Server=(LocalDB)\v11.0; Integrated Security=true ;AttachDbFileName=D:\Data\MyDB1.mdf".

[!NOTA]

La prima volta che un utente prova a connettersi a LocalDB in un computer, l'istanza automatica deve essere creata e avviata. Il tempo aggiuntivo necessario per la creazione dell'istanza può determinare un errore di tentativo di connessione generando un messaggio di timeout. In una situazione simile, attendere pochi secondi per consentire il completamento del processo di creazione, quindi riconnettersi.

Creazione e connessione alle istanze denominate

Oltre all'istanza automatica, LocalDB supporta anche istanze denominate. Utilizzare il programma SqlLocalDB.exe per creare, avviare e arrestare un'istanza denominata di LocalDB. Per ulteriori informazioni su SqlLocalDB.exe, vedere Utilità SqlLocalDB.

REM Create an instance of LocalDB
"C:\Program Files\Microsoft SQL Server\110\Tools\Binn\SqlLocalDB.exe" create LocalDBApp1
REM Start the instance of LocalDB
"C:\Program Files\Microsoft SQL Server\110\Tools\Binn\SqlLocalDB.exe" start LocalDBApp1
REM Gather information about the instance of LocalDB
"C:\Program Files\Microsoft SQL Server\110\Tools\Binn\SqlLocalDB.exe" info LocalDBApp1

Nell'ultima riga sopra indicata vengono restituite informazioni simili alle seguenti.

Nome

"LocalDBApp1"

Versione

<Versione corrente>

Nome condiviso

""

Proprietario

"<Utente di Windows>"

Creazione automatica

No

State

in esecuzione

Ultima ora inizio

<Data e ora>

Nome pipe dell'istanza

np:\\. \pipe\LOCALDB #F365A78E\tsql\query

[!NOTA]

Se nell'applicazione viene utilizzato una versione di .NET precedente alla versione 4.0.2 è necessario connettersi direttamente alla named pipe di LocalDB. Il valore Nome pipe dell'istanza è la named pipe su cui l'istanza di LocalDB è in ascolto. La parte del nome pipe dell'istanza successiva a LOCALDB # verrà modificata a ogni avvio dell'istanza di LocalDB. Per connettersi all'istanza di LocalDB utilizzando SQL Server Management Studio, immettere il nome pipe dell'istanza nella casella Nome server della finestra di dialogo Connetti al Motore di database. Dal programma personalizzato è possibile stabilire una connessione all'istanza di LocalDB usando una stringa di connessione simile a SqlConnection conn = new SqlConnection(@"Server=np:\\.\pipe\LOCALDB#F365A78E\tsql\query");

Connessione a un'istanza condivisa di LocalDB

Per connettersi a un'istanza condivisa di LocalDB aggiungere .\ (punto + barra rovesciata) alla stringa di connessione per fare riferimento allo spazio dei nomi riservato per le istanze condivise. Ad esempio, per connettersi a un'istanza condivisa di LocalDB denominata AppData usare (localdb)\.\AppData come stringa di connessione. Un utente che si connette a un'istanza condivisa di LocalDB di cui non è proprietario, deve disporre di un account di accesso con autenticazione di Windows o autenticazione di SQL Server.

Risoluzione dei problemi

Per informazioni sulla risoluzione dei problemi di LocalDB, vedere la pagina relativa alla risoluzione dei problemi di SQL Server 2012 Express LocalDB.

Autorizzazioni

Un'istanza di SQL Server 2012 Express LocalDB è un'istanza creata da un utente per il proprio utilizzo. Qualsiasi utente del computer è in grado di creare un database mediante un'istanza di LocalDB, archiviando i file nel relativo percorso utente ed eseguendo il processo con le relative credenziali. Per impostazione predefinita, l'accesso all'istanza di LocalDB è limitato al relativo proprietario. I dati contenuti in LocalDB sono protetti dall'accesso ai file di database tramite il file system. Se i file di database dell'utente vengono archiviati in un percorso condiviso, il database può essere aperto da qualsiasi utente con accesso al file system in quel percorso utilizzando un'istanza di LocalDB di cui è proprietario. Se i file di database si trovano in un percorso protetto, ad esempio la cartella dati utente, solo quell'utente e gli amministratori con accesso a quella cartella, possono aprire il database. I file di LocalDB possono essere aperti solo da un'istanza di LocalDB alla volta.

[!NOTA]

LocalDB viene eseguito sempre nel contesto di sicurezza dell'utente, cioè non viene mai eseguito con credenziali del gruppo di amministratori locali. Pertanto, tutti i file di database utilizzati da un'istanza di LocalDB devono essere accessibili mediante l'account di Windows dell'utente proprietario, senza considerare l'appartenenza al gruppo di amministratori locali.

Vedere anche

Riferimento

Utilità SqlLocalDB