Conectando-se a uma instância do SQL Server
A primeira etapa de programação em um aplicativo do SQL Server Management Objects (SMO) é criar uma instância do objeto Server e estabelecer sua conexão com uma instância do Microsoft SQL Server.
Você pode criar uma instância do objeto Server 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 é transmitir o nome da instância do SQL Server no construtor do objeto Server.
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. Declare um objeto ServerConnection e defina as propriedades com informações de conexão como o nome da instância do SQL Servere 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 simultaneamente. Use o método Copy para obter uma cópia das configurações de conexão existentes.
Definindo explicitamente as propriedades do objeto Server
Como alternativa, você pode declarar a variável do objeto Server e chamar o construtor padrão. Dessa maneira, o objeto Server tenta se conectar à instância padrão do SQL Server com todas as configurações de conexão padrão.
Fornecendo o nome de instância do SQL Server no construtor do objeto Server
Declare a variável do objeto Server e passe o nome da instância do SQL Server como parâmetro de cadeia de caracteres no construtor. O objeto Server estabelece uma conexão com a instância do SQL Server com as configurações de conexão padrão.
Pool de conexões
Normalmente não é necessário chamar o método Connect do objeto ServerConnection. O SMO estabelecerá automaticamente uma conexão quando for necessário e liberará a conexão com o pool de conexão após concluir as operações. Quando o método Connect é chamado, a conexão não é liberada para o pool. Uma chamada explícita do método Disconnect é necessária para liberar a conexão com o pool. Além disso, você pode solicitar uma conexão sem pool definindo a propriedade NonPooledConnection do objeto ServerConnection.
Aplicativos multi-threaded
Para aplicativos multithreaded, um objeto ServerConnection separado deveria ser usado em cada thread.
Conectando-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 de RMO exigem que seja feita uma conexão com uma instância do SQL Server usando o objeto ServerConnection implementado pelo namespace Microsoft.SqlServer.Management.Common. Essa conexão com o servidor é feita independentemente de um objeto de programação de RMO. Então, ela é passada para o objeto RMO, seja durante a criação da instância, seja por atribuição à propriedade ConnectionContext 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 precisa ter seu próprio objeto ServerConnection.
Todas as informações sobre autenticação para estabelecer com êxito a conexão e o logon no servidor são fornecidas no objeto ServerConnection.
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 precisa ser definido como False, e Login e Password precisam ser definidos com um logon e senha válidos 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, será necessário escolher o ambiente de programação, o modelo de programação e a linguagem de programação para criar o aplicativo. Para mais informações, consulte "Como criar um projeto Visual Basic SMO no Visual Studio .NET" ou "Como criar um projeto Visual C# SMO no Visual Studio .NET" nos Manuais Online do SQL Server.
Conectando-se à instância local do SQL Server usando a Autenticação do Windows no Visual Basic
A conexão com a instância local do SQL Server não exige 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 exige a recuperação dos dados faz com que uma conexão seja criada.
Este exemplo é o código Visual Basic .NET 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.
Conectando-se à instância local do SQL Server usando a Autenticação do Windows no Visual C#
A conexão com a instância local do SQL Server não exige 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 exige a recuperação dos dados faz com que uma conexão seja criada.
Este exemplo é o código Visual C# .NET 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.
Conectando-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.
Esse exemplo é o código .NET 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.
Conectando-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 Visual C# .NET 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.
Conectando-se a uma instância do SQL Server usando a Autenticação do SQL Server no Visual Basic
Quando você se conectar a uma instância do SQL Server usando Autenticação do SQL Server, deverá especificar o tipo de autenticação. Este exemplo demonstra o método alternativo de declarar uma variável de objeto ServerConnection que habilita as informações de conexão a serem reutilizadas.
O exemplo é o código Visual Basic .NET que demonstra como se conectar à instância remota e vPassword contém o logon 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
Conectando-se a uma instância do SQL Server usando a Autenticação do SQL Server no Visual C#
Quando você se conectar a uma instância do SQL Server usando Autenticação do SQL Server, deverá especificar o tipo de autenticação. Este exemplo demonstra o método alternativo de declarar uma variável de objeto ServerConnection que habilita as informações de conexão a serem reutilizadas.
O exemplo é o código Visual C# .NET que demonstra como se conectar à instância remota e vPassword contém o logon 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
}
}