Condividi tramite


Connessione a un'istanza di SQL Server

Il primo passaggio di programmazione in un'applicazione SMO (SQL Server Management Objects) consiste nel creare un'istanza dell'oggetto Server e stabilire la connessione a un'istanza di Microsoft SQL Server.

È possibile creare un'istanza dell'oggetto Server e stabilire una connessione all'istanza di SQL Server in tre modi. 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 nel passare il nome dell'istanza di SQL Server nel costruttore dell'oggettoServer.

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 ServerConnection oggetto e impostare le proprietà con informazioni di connessione, ad esempio 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. Così come, 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 Server variabile oggetto e passare il nome dell'istanza SQL Server come parametro 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 multithreading, in ogni thread è necessario utilizzare un oggetto ServerConnection separato.

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 che una connessione a un'istanza di SQL Server venga effettuata usando l'oggetto ServerConnection implementato dallo spazio dei Microsoft.SqlServer.Management.Common nomi . 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. Le regole seguenti sono valide per le connessioni a un server di replica:

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

  • Ogni connessione a un'istanza di SQL Server deve avere un proprio ServerConnection oggetto.

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

  • Per impostazione predefinita, le connessioni vengono stabilite tramite l'autenticazione di Microsoft Windows. Per usare SQL Server Authentication, LoginSecure deve essere impostato su False e LoginPassword deve essere impostato su un SQL Server valido accesso e password. Le credenziali di sicurezza 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.

Esempio

Per usare 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 è il codice .NET di Visual Basic che si connette all'istanza locale di SQL Server tramite l'autenticazione di Windows.

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 è il codice .NET di Visual C# che si connette 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 è il codice .NET di Visual Basic che si connette all'istanza remota di SQL Server tramite l'autenticazione di Windows. La variabile stringa strServer contiene il nome dell'istanza remota.

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 è il codice .NET di Visual C# che si connette 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 usando SQL Server Authentication, è 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.

L'esempio è il codice .NET di Visual Basic che illustra come connettersi all'istanza remota e vPassword contengono l'accesso e la password.

' compile with:   
' /r:Microsoft.SqlServer.Smo.dll  
' /r:Microsoft.SqlServer.ConnectionInfo.dll  
' /r:Microsoft.SqlServer.Management.Sdk.Sfc.dll   
  
Imports Microsoft.SqlServer.Management.Smo  
Imports Microsoft.SqlServer.Management.Common  
  
Public Class A  
   Public Shared Sub Main()  
      Dim sqlServerLogin As [String] = "user_id"  
      Dim password As [String] = "pwd"  
      Dim instanceName As [String] = "instance_name"  
      Dim remoteSvrName As [String] = "remote_server_name"  
  
      ' Connecting to an instance of SQL Server using SQL Server Authentication  
      Dim srv1 As New Server()   ' connects to default instance  
      srv1.ConnectionContext.LoginSecure = False   ' set to true for Windows Authentication  
      srv1.ConnectionContext.Login = sqlServerLogin  
      srv1.ConnectionContext.Password = password  
      Console.WriteLine(srv1.Information.Version)   ' connection is established  
  
      ' Connecting to a named instance of SQL Server with SQL Server Authentication using ServerConnection  
      Dim srvConn As New ServerConnection()  
      srvConn.ServerInstance = ".\" & instanceName   ' connects to named instance  
      srvConn.LoginSecure = False   ' set to true for Windows Authentication  
      srvConn.Login = sqlServerLogin  
      srvConn.Password = password  
      Dim srv2 As New Server(srvConn)  
      Console.WriteLine(srv2.Information.Version)   ' connection is established  
  
      ' For remote connection, remote server name / ServerInstance needs to be specified  
      Dim srvConn2 As New ServerConnection(remoteSvrName)  
      srvConn2.LoginSecure = False  
      srvConn2.Login = sqlServerLogin  
      srvConn2.Password = password  
      Dim srv3 As New Server(srvConn2)  
      Console.WriteLine(srv3.Information.Version)   ' connection is established  
   End Sub  
End Class  

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 usando SQL Server Authentication, è 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.

L'esempio è il codice .NET di Visual C# che illustra come connettersi all'istanza remota e vPassword contengono l'accesso e la password.

// compile with:   
// /r:Microsoft.SqlServer.Smo.dll  
// /r:Microsoft.SqlServer.ConnectionInfo.dll  
// /r:Microsoft.SqlServer.Management.Sdk.Sfc.dll   
  
using System;  
using Microsoft.SqlServer.Management.Smo;  
using Microsoft.SqlServer.Management.Common;  
  
public class A {  
   public static void Main() {   
      String sqlServerLogin = "user_id";  
      String password = "pwd";  
      String instanceName = "instance_name";  
      String remoteSvrName = "remote_server_name";  
  
      // Connecting to an instance of SQL Server using SQL Server Authentication  
      Server srv1 = new Server();   // connects to default instance  
      srv1.ConnectionContext.LoginSecure = false;   // set to true for Windows Authentication  
      srv1.ConnectionContext.Login = sqlServerLogin;  
      srv1.ConnectionContext.Password = password;  
      Console.WriteLine(srv1.Information.Version);   // connection is established  
  
      // Connecting to a named instance of SQL Server with SQL Server Authentication using ServerConnection  
      ServerConnection srvConn = new ServerConnection();  
      srvConn.ServerInstance = @".\" + instanceName;   // connects to named instance  
      srvConn.LoginSecure = false;   // set to true for Windows Authentication  
      srvConn.Login = sqlServerLogin;  
      srvConn.Password = password;  
      Server srv2 = new Server(srvConn);  
      Console.WriteLine(srv2.Information.Version);   // connection is established  
  
      // For remote connection, remote server name / ServerInstance needs to be specified  
      ServerConnection srvConn2 = new ServerConnection(remoteSvrName);  
      srvConn2.LoginSecure = false;  
      srvConn2.Login = sqlServerLogin;  
      srvConn2.Password = password;  
      Server srv3 = new Server(srvConn2);  
      Console.WriteLine(srv3.Information.Version);   // connection is established  
   }  
}  

Vedere anche

Server
ServerConnection