Conectarse a una instancia de SQL Server
El primer paso de programación de una aplicación SMO (Objetos de administración de SQL Server) es crear una instancia del objeto Server y establecer su conexión a una instancia de Microsoft SQL Server.
Puede crear una instancia del objeto Server y establecer una conexión a la instancia de SQL Server de tres maneras. La primera es usar una variable de objeto ServerConnection para proporcionar la información de conexión. La segunda es proporcionar la información de conexión estableciendo explícitamente las propiedades del objeto Server. La tercera es pasar el nombre de la instancia de SQL Server en el constructor del objeto Server.
Utilizar un objeto ServerConnection
La ventaja de usar la variable de objeto ServerConnection es que se puede reutilizar la información de conexión. Declare una variable de objeto Server. A continuación, declare un objeto ServerConnection y establezca las propiedades con información de conexión como el nombre de la instancia de SQL Server y el modo de autenticación. A continuación, pase la variable de objeto ServerConnection como parámetro al constructor de objeto Server. No se recomienda compartir a la vez las conexiones entre objetos de servidor distintos. Use el método Copy para obtener una copia de los valores de conexión existentes.
Establecer explícitamente las propiedades del objeto Server
De modo alternativo, puede declarar la variable de objeto Server y llamar al constructor predeterminado. Tal cual, el objeto Server intenta conectarse a la instancia predeterminada de SQL Server con todos los valores de conexión predeterminados.
Proporcionar el nombre de la instancia de SQL Server en el constructor de objeto Server
Declare la variable de objeto Server y pase el nombre de instancia de SQL Server como parámetro de cadena en el constructor. El objeto Server establece una conexión con la instancia de SQL Server con los valores de conexión predeterminados.
Agrupar conexiones
No se requiere normalmente llamar al método Connect del objeto ServerConnection. SMO establecerá automáticamente una conexión cuando sea necesario y liberará la conexión al grupo de conexiones después de haber terminado de realizar las operaciones. Cuando se llama al método Connect, no se libera la conexión al grupo. Es necesaria una llamada explícita al método Disconnect para liberar la conexión al grupo. Además, puede solicitar una conexión no agrupada estableciendo la propiedad NonPooledConnection del objeto ServerConnection.
Aplicaciones multiproceso
Para las aplicaciones multiproceso, se debe usar un objeto ServerConnection independiente en cada subproceso.
Conectarse a una instancia de SQL Server para RMO
Objetos de administración de replicación (RMO) usa un método ligeramente distinto de SMO para conectarse a un servidor de replicación.
Los objetos de programación RMO requieren que se realice una conexión a una instancia de SQL Server utilizando el objeto ServerConnection implementado por el espacio de nombres Microsoft.SqlServer.Management.Common. Esta conexión al servidor se realiza independientemente de los objetos de programación RMO. A continuación, se pasa al objeto RMO durante la creación de la instancia o por asignación a la propiedad ConnectionContext del objeto. De esta manera, se pueden crear y administrar los objetos de programación RMO y las instancias de objeto de conexión por separado y se puede reutilizar un objeto de conexión único con varios objetos de programación RMO. Las reglas siguientes se aplican a las conexiones a un servidor de replicación:
Todas las propiedades de la conexión se definen para un objeto ServerConnection especificado.
Cada conexión a una instancia de SQL Server debe tener su propio objeto ServerConnection.
Toda la información de autenticación para realizar la conexión e iniciar sesión en el servidor correctamente se proporciona en el objeto ServerConnection.
De forma predeterminada, las conexiones se realizan mediante la autenticación de Microsoft Windows. Para usar la autenticación de SQL Server, LoginSecure debe estar establecido en False y Login y Password deben estar establecidos en un inicio de sesión y contraseña de SQL Server válidos. Las credenciales de seguridad deben estar almacenadas y administradas de forma segura siempre y proporcionarse en tiempo de ejecución siempre que sea posible.
Se debe llamar al método Connect antes de pasar la conexión a cualquier objeto de programación RMO.
Ejemplos
Para utilizar cualquier ejemplo de código que se proporcione, deberá elegir el entorno de programación, la plantilla de programación y el lenguaje de programación en los que crear su aplicación. Para obtener más información, vea "Cómo crear un proyecto de Visual Basic SMO en Visual Studio .NET" o "Cómo crear un proyecto de Visual C# SMO en Visual Studio .NET" en los Libros en pantalla de SQL Server.
Conectarse a la instancia local de SQL Server mediante la autenticación de Windows en Visual Basic
Para conectarse a la instancia local de SQL Server no se requiere mucho código. En su lugar, se basa en la configuración predeterminada del método de autenticación y servidor. La primera operación que requiera que se recuperen datos hará que se cree una conexión.
Este ejemplo está formado por código Visual Basic .NET que se conecta a la instancia local de SQL Server mediante la autenticación de 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.
Conectarse a la instancia local de SQL Server mediante la autenticación de Windows en Visual C#
Para conectarse a la instancia local de SQL Server no se requiere mucho código. En su lugar, se basa en la configuración predeterminada del método de autenticación y servidor. La primera operación que exija la recuperación de datos hará que se cree una conexión.
Este ejemplo está formado por código Visual C# .NET que se conecta a la instancia local de SQL Server mediante la autenticación de 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.
Conectarse a una instancia remota de SQL Server mediante la autenticación de Windows en Visual Basic
Al conectarse a una instancia de SQL Server mediante la autenticación de Windows, no es necesario especificar el tipo de autenticación. La autenticación de Windows es el valor predeterminado.
Este ejemplo es código Visual Basic .NET que se conecta a la instancia remota de SQL Server mediante la autenticación de Windows. La variable de cadena strServer contiene el nombre de la instancia 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.
Conectarse a una instancia remota de SQL Server mediante la autenticación de Windows en Visual C#
Al conectarse a una instancia de SQL Server mediante la autenticación de Windows, no es necesario especificar el tipo de autenticación. Se usa la autenticación de Windows de forma predeterminada.
Este ejemplo está formado por código Visual C# .NET que se conecta a la instancia remota de SQL Server mediante la autenticación de Windows. La variable de cadena strServer contiene el nombre de la instancia 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.
Conectarse a una instancia de SQL Server mediante la autenticación de SQL Server en Visual Basic
Al conectarse a una instancia de SQL Server utilizando la autenticación de SQL Server, debe especificar el tipo de autenticación. Este ejemplo muestra el método alternativo de declarar una variable de objeto ServerConnection, que permite reutilizar la información de conexión.
El ejemplo está formado por código Visual Basic .NET que muestra cómo conectarse a la instancia remota, y vPassword contiene el inicio de sesión y la contraseña.
' 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
Conectarse a una instancia de SQL Server mediante la autenticación de SQL Server en Visual C#
Al conectarse a una instancia de SQL Server utilizando la autenticación de SQL Server, debe especificar el tipo de autenticación. Este ejemplo muestra el método alternativo de declarar una variable de objeto ServerConnection, que permite reutilizar la información de conexión.
El ejemplo está formado por código Visual C# .NET que muestra cómo conectarse a la instancia remota, y vPassword contiene el inicio de sesión y la contraseña.
// 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
}
}