Connessione a un'istanza di SQL Server

La prima fase di programmazione in un'applicazione SMO (SQL Server Management Objects) consiste nel creare un'istanza dell'oggetto Server e nello stabilire la connessione a un'istanza di MicrosoftSQL Server.

È possibile creare un'istanza dell'oggetto Server e stabilire una connessione all'istanza di SQL Server in tre modi diversi. Il primo metodo consiste nell'utilizzare una variabile oggetto ServerConnection per fornire le informazioni di connessione. Il secondo consiste nel fornire le informazioni di connessione impostando in modo esplicito le proprietà dell'oggetto Server. Il terzo consiste infine nel passare il nome dell'istanza di SQL Server nel costruttore dell'oggetto Server.

Utilizzo di un oggetto ServerConnection

Il vantaggio dell'utilizzo della variabile oggetto ServerConnection è costituito dal fatto che consente di riutilizzare le informazioni di connessione. Dichiarare una variabile oggetto Server. Dichiarare quindi un oggetto ServerConnection e impostare proprietà con le informazioni di connessione, quali il nome dell'istanza di SQL Server e la modalità di autenticazione. Passare quindi la variabile oggetto ServerConnection come parametro al costruttore dell'oggetto Server. Non è consigliabile condividere connessioni tra diversi oggetti server contemporaneamente. Utilizzare il metodo Copy per ottenere una copia delle impostazioni di connessione esistenti.

Impostazione esplicita delle proprietà dell'oggetto server

In alternativa, è possibile dichiarare la variabile oggetto Server e chiamare il costruttore predefinito. In questo modo, l'oggetto Server tenta di connettersi all'istanza predefinita di SQL Server con tutte le impostazioni di connessione predefinite.

Definizione del nome dell'istanza di SQL Server nel costruttore dell'oggetto server

Dichiarare la variabile oggetto Server e passare il nome dell'istanza di SQL Server come parametro di stringa nel costruttore. L'oggetto Server stabilisce una connessione con l'istanza di SQL Server con le impostazioni di connessione predefinite.

Pool di connessioni

Non è in genere necessario chiamare il metodo Connect dell'oggetto ServerConnection. SMO stabilirà automaticamente una connessione laddove necessario e rilascerà la connessione al pool di connessioni dopo avere completato l'esecuzione delle operazioni. Quando viene chiamato il metodo Connect, la connessione non viene rilasciata al pool. È necessaria una chiamata esplicita al metodo Disconnect per rilasciare la connessione al pool. È inoltre possibile richiedere una connessione non in pool impostando la proprietà NonPooledConnection dell'oggetto ServerConnection.

Applicazioni a thread multipli

Per le applicazioni a thread multipli, è necessario utilizzare un oggetto ServerConnection distinto in ogni thread.

Connessione a un'istanza di SQL Server per RMO

RMO (Replication Management Objects) utilizza un metodo leggermente diverso da SMO per connettersi a un server di replica.

Gli oggetti di programmazione RMO richiedono l'esecuzione di una connessione a un'istanza di SQL Server tramite l'oggetto ServerConnection implementato dallo spazio dei nomi Microsoft.SqlServer.Management.Common. Questa connessione al server viene stabilita indipendentemente da un oggetto di programmazione RMO. La connessione viene quindi passata all'oggetto RMO durante la creazione dell'istanza o tramite l'assegnazione alla proprietà ConnectionContext dell'oggetto. In questo modo, un oggetto di programmazione RMO e le istanze dell'oggetto connessione possono essere creati e gestiti separatamente e un singolo oggetto connessione può essere riutilizzato con più oggetti di programmazione RMO. Alle connessioni a un server di replica si applicano le regole seguenti:

  • Tutte le proprietà per la connessione vengono definite per un oggetto ServerConnection specificato.

  • Ogni connessione a un'istanza di SQL Server deve disporre del relativo oggetto ServerConnection.

  • Tutte le informazioni di autenticazione che consentono di stabilire la connessione e di accedere correttamente al server vengono fornite nell'oggetto ServerConnection.

  • Per impostazione predefinita, le connessioni vengono stabilite tramite l'autenticazione di Microsoft Windows. Per utilizzare l'autenticazione di SQL Server, la proprietà LoginSecure deve essere impostata su False e Login e Password devono essere impostate su un account di accesso e una password di SQL Server validi. Le credenziali di protezione devono essere sempre archiviate e gestite in modo protetto, e fornite in fase di esecuzione laddove possibile.

  • Il metodo Connect deve essere chiamato prima di passare la connessione a qualsiasi oggetto di programmazione RMO.

Esempi

Per utilizzare qualsiasi esempio di codice fornito, è necessario scegliere l'ambiente di programmazione, il modello di programmazione e il linguaggio di programmazione per la creazione dell'applicazione. Per ulteriori informazioni, vedere "Procedura: Creare un progetto Visual Basic SMO in Visual Studio .NET" o "Procedura: Creare un progetto Visual C# SMO in Visual Studio .NET" nella documentazione online di SQL Server.

Connessione all'istanza locale di SQL Server tramite l'autenticazione di Windows in Visual Basic

La connessione all'istanza locale di SQL Server non richiede molto codice, ma si basa al contrario sulle impostazioni predefinite per il metodo di autenticazione e per il server. La prima operazione che richiede il recupero di dati comporterà la creazione di una connessione.

Questo esempio include il codice Visual Basic .NET per la connessione all'istanza locale di SQL Server tramite l'autenticazione di Windows.

'Connect to the local, default instance of SQL Server.
Dim srv As Server
srv = New Server
'The connection is established when a property is requested.
Console.WriteLine(srv.Information.Version)
'The connection is automatically disconnected when the Server variable goes out of scope.

Connessione all'istanza locale di SQL Server tramite l'autenticazione di Windows in Visual C#

La connessione all'istanza locale di SQL Server non richiede molto codice, ma si basa al contrario sulle impostazioni predefinite per il metodo di autenticazione e per il server. La prima operazione che richiede il recupero di dati comporterà la creazione di una connessione.

Questo esempio include il codice Visual C# .NET per la connessione all'istanza locale di SQL Server tramite l'autenticazione di Windows.

{ 
//Connect to the local, default instance of SQL Server. 
Server srv; 
srv = new Server(); 
//The connection is established when a property is requested. 
Console.WriteLine(srv.Information.Version); 
} 
//The connection is automatically disconnected when the Server variable goes out of scope.

Connessione a un'istanza remota di SQL Server tramite l'autenticazione di Windows in Visual Basic

Quando ci si connette a un'istanza di SQL Server tramite l'autenticazione di Windows, non è necessario specificare il tipo di autenticazione. L'autenticazione di Windows rappresenta l'impostazione predefinita.

Questo esempio include il codice Visual Basic .NET per la connessione all'istanza remota di SQL Server tramite autenticazione di Windows. La variabile stringa strServer contiene il nome dell'istanza remota.

'Connect to a remote instance of SQL Server.
Dim srv As Server
'The strServer string variable contains the name of a remote instance of SQL Server.
srv = New Server(strServer)
'The actual connection is made when a property is retrieved. 
Console.WriteLine(srv.Information.Version)
'The connection is automatically disconnected when the Server variable goes out of scope.

Connessione a un'istanza remota di SQL Server tramite l'autenticazione di Windows in Visual C#

Quando ci si connette a un'istanza di SQL Server tramite l'autenticazione di Windows, non è necessario specificare il tipo di autenticazione. L'autenticazione di Windows rappresenta l'impostazione predefinita.

Questo esempio include il codice Visual C# .NET per la connessione all'istanza remota di SQL Server tramite l'autenticazione di Windows. La variabile stringa strServer contiene il nome dell'istanza remota.

{ 
//Connect to a remote instance of SQL Server. 
Server srv; 
//The strServer string variable contains the name of a remote instance of SQL Server. 
srv = new Server(strServer); 
//The actual connection is made when a property is retrieved. 
Console.WriteLine(srv.Information.Version); 
} 
//The connection is automatically disconnected when the Server variable goes out of scope.

Connessione a un'istanza di SQL Server tramite l'autenticazione di SQL Server in Visual Basic

Quando ci si connette a un'istanza di SQL Server tramite l'autenticazione di SQL Server, è necessario specificare il tipo di autenticazione. Nell'esempio viene illustrato il metodo alternativo per dichiarare una variabile oggetto ServerConnection che consente il riutilizzo delle informazioni di connessione.

Questo esempio include il codice Visual Basic .NET in cui viene illustrato come connettersi all'istanza remota, mentre l'oggetto vPassword contiene l'account di accesso e la password.

'Declare a ServerConnection object variable to specify SQL authentication, login and password.
Dim conn As New ServerConnection
conn.LoginSecure = False
conn.Login = vlogin
conn.Password = vpassword
'Connect to the local, default instance of SQL Server.
Dim srv As Server
srv = New Server(conn)
'The actual connection is made when a property is retrieved.
Console.WriteLine(srv.Information.Version)
'The connection is automatically disconnected when the Server variable goes out of scope.

Connessione a un'istanza di SQL Server tramite l'autenticazione di SQL Server in Visual C#

Quando ci si connette a un'istanza di SQL Server tramite l'autenticazione di SQL Server, è necessario specificare il tipo di autenticazione. In questo esempio viene illustrato il metodo alternativo per dichiarare una variabile oggetto ServerConnection che consente il riutilizzo delle informazioni di connessione.

Questo esempio include il codice Visual C# .NET in cui viene illustrato come connettersi all'istanza remota, mentre l'oggetto vPassword contiene l'account di accesso e la password.

{ 
//Connect to a remote instance of SQL Server. 
Server srv; 
//The strServer string variable contains the name of a remote instance of SQL Server. 
srv = new Server(strServer); 
//The actual connection is made when a property is retrieved. 
Console.WriteLine(srv.Information.Version); 
} 
//The connection is automatically disconnected when the Server variable goes out of scope.

Vedere anche

Riferimento