Condividi tramite


Istanze utente per non amministratori

Data aggiornamento: 5 dicembre 2005

L'istanza utente è una funzionalità che consente ai non amministratori di eseguire una versione locale di SQL Server nel loro account. Con le istanze utente, i non amministratori dispongono di privilegi di proprietario del database sull'istanza in esecuzione nel loro account. 

Un'istanza utente, nota anche come istanza figlio o client, è un'istanza di SQL Server generata dall'istanza padre (l'istanza primaria eseguita come servizio, ad esempio SQLExpress) per conto di un utente. L'istanza utente viene eseguita come processo utente nel contesto di protezione di tale utente. L'istanza utente è inoltre isolata dall'istanza padre e da qualsiasi altra istanza utente in esecuzione nel computer. Questa funzionalità è nota anche come RANU (Run As Normal User).

[!NOTA] Per coerenza, nella documentazione in linea di SQL Server Express questa funzionalità viene sempre indicata con il termine istanza utente. Si tratta inoltre di una funzionalità disponibile solo in SQL Server 2005 Express Edition.

Vantaggi delle istanze utente

Di seguito sono elencati alcuni dei motivi per cui risulta vantaggioso l'utilizzo del modello basato sulle istanze utente:

  • L'obiettivo primario del modello basato sulle istanze utente è quello di isolare gli utenti non amministratori di SQL Server, consentendo così ai singoli utenti di collegare i database desiderati senza il rischio di compromettere le attività di un altro utente. Tale isolamento viene ottenuto generando un'istanza separata di SQL Server per ogni utente.
  • Un altro obiettivo di SQL Server Express è quello di semplificare l'utilizzo del prodotto per gli utenti non amministratori. Molti utenti di Windows dispongono di account con privilegi amministrativi. Sfortunatamente, quando si utilizza un account Administrator risulta più semplice assumere il controllo del computer tramite malware. Se il programma malware è eseguito da utenti non amministratori, tuttavia, non potrà apportare modifiche estese all'intero sistema e potrà quindi causare solo danni limitati.

Panoramica del modello basato sulle istanze utente

Le caratteristiche principali del modello basato sulle istanze utente possono essere riepilogate come segue:

  • Per generare istanze utente, è necessario che sia in esecuzione un'istanza padre di SQL Server.

  • Ogni volta che si installa SQL Server Express, il programma di installazione crea una cartella Template Data in cui vengono archiviati i database di sistema puliti disponibili per l'utilizzo da parte del processo dell'istanza utente, se richiamato.

  • Per richiamare l'istanza utente si utilizza la parola chiave user instance per la stringa di connessione in SQLClient. I possibili valori di questa parola chiave sono true o false e il valore predefinito è false. Se la parola chiave viene impostata su false, il supporto delle istanze utente non viene attivato e viene mantenuto il funzionamento originale. Se la parola chiave user instance viene impostata su true, il modello basato sulle istanze utente verrà attivato durante la chiamata ADO. NET connection.open.

    [!NOTA] Lo spazio dei nomi System.Data.SqlClient definisce un set di classi che abilita l'accesso al database di SQL Server, denominato collettivamente provider di dati .NET per SQL Server o SqlClient. Le applicazioni gestite interagiscono con SqlClient tramite l'API ADO .NET per eseguire query e modifiche sui dati e le informazioni dello schema archiviati nei database di SQL Server. Per ulteriori informazioni, vedere la documentazione di Visual Studio 2005.

  • Quando viene generata la prima istanza utente per qualsiasi utente, i database di sistema vengono copiati dalla cartella Template Data in un percorso della directory del repository locale dei dati di applicazione dell'utente e diventano disponibili per l'utilizzo esclusivo da parte dell'istanza utente. Questo percorso è in genere drive:\Documents and Settings\Username\Local Settings\Application Data\Microsoft\Microsoft SQL Server Data\SQLEXPRESS.**

  • L'utente si connette alla nuova istanza utente come SysAdmin e può utilizzare il database anche se non è un amministratore nell'istanza padre.

[!NOTA] I database utente derivano le proprietà READONLY dagli attributi e dalle autorizzazioni del file system per il file primario del database. Le impostazioni ALTER DATABASE SET READ_ONLY/READ_WRITE non sono applicabili.

  • Dopo la generazione dell'istanza utente, SQLClient reindirizza tutte le chiamate all'istanza utente.

Stringa di connessione per l'utilizzo dell'istanza utente

conn string =
"Data Source=.\\SQLExpress" +
"integrated security=true;" + 
"attachdbfilename=|DataDirectory|\mydb.mdf;" +
"user instance=true"
string connstr = GetConnectionString(); // get from config
using(SqlConnection conn = new SqlConnection(connstr)) {
  // this will connect to the user instance, not to the 
  // default SSE instance
  conn.Open();
  // use the connection to the user instance
}

Connessione a un'istanza utente

L'unico protocollo di rete supportato per le istanze utente è il protocollo Named Pipes locale e ciò significa che non è consentita la connessione a un'istanza utente da un computer remoto.

Per informazioni sulla connessione a un'istanza utente utilizzando SQL Server Management Studio, vedere "SQL Server Management Studio e SQL Server Express" nella Documentazione in linea di SQL Server Express

[!NOTA] Per ulteriori informazioni sul protocollo Named Pipes o altri protocolli di rete, vedere la Guida in linea di Gestione configurazione SQL Server. Per accedere a questa Guida in linea, fare clic sul pulsante Start, scegliere Esegui e quindi digitare SQLServerManager.msc. Verrà aperta la console Gestione configurazione SQL Server. Per accedere alla Guida in linea, fare clic sul menu ?. Per visualizzare i protocolli di rete disponibili per SQL Server, fare clic su Configurazione di rete SQL Server 2005.

Amministrazione delle istanze utente

Le informazioni seguenti sono destinate agli amministratori responsabili della gestione delle istanze utente.

Vista/stored procedure/Transact-SQL Descrizione

Select * from sys.dm_os_child_instances

Consente di eseguire una vista virtuale per elencare tutte le istanze utente generate nell'istanza padre.

SHUTDOWN

Interrompe SQL Server. Utilizzare questo comando per interrompere l'istanza utente. Per ulteriori informazioni sull'utilizzo del comando SHUTDOWN, vedere SHUTDOWN (Transact-SQL) nella documentazione in linea di SQL Server 2005.

sp_configure 'user instances enabled'

Controlla l'attivazione o disattivazione della funzionalità istanza utente.

Per attivare la generazione di istanze utente, utilizzare:

sp_configure 'user instances enabled','1' 

RECONFIGURE;

GO

Per disattivare la generazione di istanze utente, utilizzare:

sp_configure 'user instances enabled','0'.

sp_configure ‘user instance timeout’

Utilizzare:

sp_configure 'show advanced options', 1;

RECONFIGURE;

GO

sp_configure 'user instance timeout', 5;

GO

Dove 5 è il valore minimo e 65535 il valore massimo.

È necessario eseguire sp_configure ‘show advanced options’ per visualizzare e impostare il timeout. Per ulteriori informazioni sull'opzione di configurazione show advanced options, vedere Impostazione delle opzioni di configurazione del server nella documentazione in linea di SQL Server 2005.

È possibile impostare il timeout dell'istanza utente sia nell'istanza padre che nell'istanza utente.

All'avvio, un istanza utente eredita sempre il valore di timeout dall'istanza padre. Dopo l'avvio dell'istanza utente è comunque possibile utilizzare sp_configure per modificare il valore di timeout impostandone uno valido solo per l'istanza specifica.

Limitazioni per l'utilizzo delle istanze utente

Quando si utilizzano le istanze utente, è possibile che alcune funzionalità di SQL Server Express non funzionino come previsto. Nell'elenco seguente vengono descritte le possibili limitazioni:

  • Ogni utente può avviare una sola istanza utente.
  • La replica verrà disattivata.
  • Le istanze utente non supportano l'autenticazione di SQL Server, ma solo l'autenticazione di Windows.
  • Per le istanze utente è supportato unicamente il protocollo di rete Named Pipes locale.
  • L'istanza utente condivide le stesse voci del Registro di sistema dell'istanza padre.
  • Non sono supportate istanze utente con codice nativo. Questa funzionalità è supportata solo con ADO .NET.
  • La ricerca full-text non è supportata sulle istanze utente di SQL Server Express.
  • Il provider WMI per eventi del server non sarà supportato nelle istanze utente generate in modo dinamico. Sarà comunque disponibile per l'istanza padre di SQL Server Express. Per ulteriori informazioni sul provider WMI, vedere Provider WMI per eventi del server nella documentazione in linea di SQL Server 2005.

Vedere anche

Altre risorse

Area di download della documentazione in linea di SQL Server 2005

Guida in linea e informazioni

Assistenza su SQL Server 2005