Conectando-se a uma instância do SQL Server
A primeira etapa de programação em um aplicativo SMO (SQL Server Management Objects) é 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. O terceiro é passar o nome da instância SQL Server no construtor de 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 de 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 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. Como é, 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 de instância do SQL Server no construtor do objeto Server
Declare a variável de Server objeto e passe o nome da instância SQL Server como um parâmetro de cadeia de caracteres no construtor. O Server objeto estabelece uma conexão com a instância de 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 RMO exigem que uma conexão com uma instância de SQL Server seja feita usando o ServerConnection objeto implementado pelo Microsoft.SqlServer.Management.Common
namespace. 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 de SQL Server deve ter seu próprio ServerConnection objeto.
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 SQL Server Autenticação, LoginSecure deve ser definido como False e LoginPassword deve ser definido como um logon de SQL Server e senha válidos. 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
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 exige a recuperação dos dados 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.
Conectando-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 exige a recuperação dos dados 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.
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 de 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.
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 de 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.
Conectando-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 de SQL Server usando SQL Server Autenticação, 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 remoto e o 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#
Ao se conectar a uma instância de SQL Server usando SQL Server Autenticação, 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 remoto e o 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
}
}