Connettersi a un'istanza di SQL Server

Si applica a:SQL ServerDatabase SQL diAzure Istanzagestita di SQL di Azure Azure Synapse Analytics

Il primo passaggio di programmazione in un'applicazione SMO (SQL Server Management Objects) consiste nel creare un'istanza dell'oggetto e stabilire la connessione a un'istanza Server 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'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 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 le connessioni tra oggetti server diversi 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.

Specifica del nome dell'istanza di SQL Server nel costruttore dell'oggetto Server

Dichiarare la Server variabile oggetto e passare il nome dell'istanza di 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

La chiamata al Connect metodo dell'oggetto ServerConnection non è necessaria. Al termine delle operazioni, SMO stabilisce automaticamente le connessioni quando necessario e le restituisce al pool di connessioni. Se si chiama il Connect metodo , la connessione non verrà rilasciata al pool. A tale scopo, è necessario usare il Disconnect metodo in modo esplicito. Inoltre, è possibile acquisire una connessione non con pool modificando la NonPooledConnection proprietà dell'oggetto ServerConnection .

Applicazioni a thread multipli

Per le applicazioni multithreading, in ogni thread è necessario utilizzare un oggetto ServerConnection separato.

Connettersi 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 venga stabilita una connessione a un'istanza di SQL Server usando 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. Viene quindi passato all'oggetto RMO durante la creazione dell'istanza o tramite assegnazione alla ConnectionContext proprietà 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 per 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 l'autenticazione di SQL Server, LoginSecure deve essere impostato su False e LoginPassword deve essere impostato su un account di accesso e una password di SQL Server validi. 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.

Esempi

Per usare qualsiasi esempio di codice fornito, è necessario scegliere l'ambiente di programmazione, il modello di programmazione e il linguaggio di programmazione in cui creare l'applicazione. Per altre informazioni, vedere Creare un progetto SMO di Visual C# in Visual Studio .NET.

Connettersi all'istanza locale di SQL Server usando 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 dei dati determina la creazione di una connessione.

Questo esempio è il codice .NET di Visual Basic che si connette all'istanza locale di SQL Server usando 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.

Connettersi all'istanza locale di SQL Server usando 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 dei dati determina la creazione di una connessione.

Questo esempio è il codice .NET di Visual C# che si connette all'istanza locale di SQL Server usando 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.

Connettersi a un'istanza remota di SQL Server usando l'autenticazione di Windows in Visual Basic

Quando ci si connette a un'istanza di SQL Server usando 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 usando l'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.

Connettersi a un'istanza remota di SQL Server usando l'autenticazione di Windows in Visual C#

Quando ci si connette a un'istanza di SQL Server usando 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 usando 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.

Connettersi a un'istanza di SQL Server usando l'autenticazione di SQL Server in Visual Basic

Quando ci si connette a un'istanza di SQL Server usando 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.

L'esempio è il codice .NET di Visual Basic che illustra come connettersi al file remoto e vPassword contiene 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

Connettersi a un'istanza di SQL Server usando l'autenticazione di SQL Server in Visual C#

Quando ci si connette a un'istanza di SQL Server usando 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.

L'esempio è il codice .NET di Visual C# che illustra come connettersi al file remoto e vPassword contiene 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
   }
}

Vedi anche

Server ServerConnection