Compartilhar via


Conectar-se a uma instância do SQL Server

Aplica-se a: SQL ServerBanco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics

A primeira etapa de programação em um aplicativo SQL Server Management Objects (SMO) é criar uma instância do Server objeto e estabelecer sua conexão com uma instância do Microsoft SQL Server.

Você pode criar uma instância do Server objeto e estabelecer uma conexão com a instância do SQL Server de três maneiras. A primeira é usar uma variável do objeto ServerConnection para fornecer as informações de conexão. A segunda é fornecer as informações de conexão definindo explicitamente as propriedades do objeto Server. A terceira é passar o nome da instância do SQL Server no construtor do Server objeto.

Usando um objeto ServerConnection

A vantagem de usar a variável do objeto ServerConnection é que as informações de conexão podem ser reutilizadas. Declare uma variável do objeto Server. Em seguida, declare um ServerConnection objeto e defina propriedades com informações de conexão, como o nome da instância do SQL Server e o modo de autenticação. Passe a variável do objeto ServerConnection como parâmetro para o construtor do objeto Server. Não é recomendável compartilhar conexões entre diferentes objetos de servidor ao mesmo tempo. Use o método Copy para obter uma cópia das configurações de conexão existentes.

Definindo propriedades de objeto de servidor explicitamente

Como alternativa, você pode declarar a variável do objeto Server e chamar o construtor padrão. No estado em que se encontra, o Server objeto tenta se conectar à instância padrão do SQL Server com todas as configurações de conexão padrão.

Fornecendo o nome da instância do SQL Server no construtor do objeto Server

Declare a variável de Server objeto e passe o nome da instância do SQL Server como um parâmetro de cadeia de caracteres no construtor. O Server objeto estabelece uma conexão com a instância do SQL Server com as configurações de conexão padrão.

Pool de conexões

Chamar o Connect método do ServerConnection objeto é desnecessário. Após a conclusão das operações, o SMO estabelece automaticamente as conexões quando necessário e as retorna ao pool de conexões. Se você chamar o Connect método, a conexão não será liberada para o pool. Para conseguir isso, você precisa usar o Disconnect método explicitamente. Além disso, você pode adquirir uma conexão não em pool ajustando a NonPooledConnection propriedade do ServerConnection objeto.

Aplicativos multi-threaded

Para aplicativos multithreaded, um objeto ServerConnection separado deveria ser usado em cada thread.

Conectar-se a uma instância do SQL Server para RMO

O RMO (Replication Management Objects) usa um método ligeiramente diferente do SMO para conexão a um servidor de replicação.

Os objetos de programação RMO exigem que uma conexão com uma instância do SQL Server seja feita usando o ServerConnection objeto implementado pelo namespace Microsoft.SqlServer.Management.Common . Essa conexão com o servidor é feita independentemente de um objeto de programação de RMO. Em seguida, ele é passado para o objeto RMO durante a criação da instância ou por atribuição à ConnectionContext propriedade do objeto. Dessa maneira, um objeto de programação de RMO e as instâncias de objeto de conexão podem ser criados e gerenciados separadamente, e um único objeto de conexão pode ser reutilizado com vários objetos de programação de RMO. As regras a seguir se aplicam a conexões com um servidor de replicação:

  • São definidas todas as propriedades da conexão para um objeto ServerConnection especificado.

  • Cada conexão com uma instância do SQL Server deve ter seu próprio ServerConnection objeto.

  • Todas as informações de autenticação para fazer a conexão e entrar com êxito no servidor são fornecidas no ServerConnection objeto.

  • Por padrão, as conexões são feitas usando a Autenticação do Microsoft Windows. Para usar a Autenticação do SQL Server, LoginSecure deve ser definido como Falso e Login deve Password ser definido como uma entrada e senha válidas do SQL Server. Credenciais de segurança sempre precisam ser armazenados e manipulados de maneira segura, além de fornecidos em tempo de execução quando possível.

  • O método Connect precisa ser chamado antes de passar a conexão com qualquer objeto de programação de RMO.

Exemplos

Para usar qualquer exemplo de código fornecido, você precisará escolher o ambiente de programação, o modelo de programação e a linguagem de programação na qual criar seu aplicativo. Para obter mais informações, consulte Criar um projeto SMO do Visual C# no Visual Studio .NET.

Conectar-se à instância local do SQL Server usando a autenticação do Windows no Visual Basic

Conectar-se à instância local do SQL Server não requer muito código. Em vez disso, ela depende das configurações padrão para o servidor e o método de autenticação. A primeira operação que requer que os dados sejam recuperados faz com que uma conexão seja criada.

Este exemplo é o código .NET do Visual Basic que se conecta à instância local do SQL Server usando a Autenticação do 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.

Conectar-se à instância local do SQL Server usando a autenticação do Windows no Visual C#

Conectar-se à instância local do SQL Server não requer muito código. Em vez disso, ela depende das configurações padrão para o servidor e o método de autenticação. A primeira operação que requer que os dados sejam recuperados faz com que uma conexão seja criada.

Este exemplo é o código .NET do Visual C# que se conecta à instância local do SQL Server usando a Autenticação do 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.

Conectar-se a uma instância remota do SQL Server usando a autenticação do Windows no Visual Basic

Ao se conectar a uma instância do SQL Server usando a Autenticação do Windows, você não precisa especificar o tipo de autenticação. A Autenticação do Windows é o padrão.

Este exemplo é o código .NET do Visual Basic que se conecta à instância remota do SQL Server usando a Autenticação do Windows. A variável de cadeia de caracteres strServer contém o nome da instância 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.

Conectar-se a uma instância remota do SQL Server usando a autenticação do Windows no Visual C#

Ao se conectar a uma instância do SQL Server usando a Autenticação do Windows, você não precisa especificar o tipo de autenticação. A Autenticação do Windows é o padrão.

Este exemplo é o código .NET do Visual C# que se conecta à instância remota do SQL Server usando a Autenticação do Windows. A variável de cadeia de caracteres strServer contém o nome da instância 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.

Conectar-se a uma instância do SQL Server usando a autenticação do SQL Server no Visual Basic

Ao se conectar a uma instância do SQL Server usando a Autenticação do SQL Server, você deve especificar o tipo de autenticação. Este exemplo demonstra o método alternativo de declarar uma variável do objeto ServerConnection, que habilita as informações de conexão a serem reutilizadas.

O exemplo é o código .NET do Visual Basic que demonstra como se conectar ao controle remoto e o vPassword contém a entrada e a senha.

' 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

Conectar-se a uma instância do SQL Server usando a autenticação do SQL Server no Visual C#

Ao se conectar a uma instância do SQL Server usando a Autenticação do SQL Server, você deve especificar o tipo de autenticação. Este exemplo demonstra o método alternativo de declarar uma variável do objeto ServerConnection, que habilita as informações de conexão a serem reutilizadas.

O exemplo é o código .NET do Visual C# que demonstra como se conectar ao controle remoto e o vPassword contém a entrada e a senha.

// 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
   }
}

Confira também

Server ServerConnection