Conexión a una instancia de SQL Server
Se aplica a: SQL ServerAzure SQL Database Azure SQL Instancia administrada Azure Synapse Analytics
El primer paso de programación de una aplicación objetos de administración de SQL Server (SMO) consiste en crear una instancia del Server objeto y establecer su conexión a una instancia de Microsoft SQL Server.
Puede crear una instancia del Server objeto y establecer una conexión con la instancia de SQL Server de tres maneras. La primera es utilizar 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 consiste en pasar el nombre de la instancia de SQL Server en el constructor de Server objetos.
Uso de un objeto ServerConnection
La ventaja de utilizar 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 ServerConnection objeto y establezca 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 conexiones entre distintos objetos de servidor al mismo tiempo. Utilice 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 como está, el Server objeto intenta conectarse a la instancia predeterminada de SQL Server con toda la configuración de conexión predeterminada.
Proporcionar el nombre de instancia de SQL Server en el constructor de objetos Server
Declare la variable de Server objeto y pase el nombre de instancia de SQL Server como parámetro de cadena en el constructor. El Server objeto establece una conexión con la instancia de SQL Server con la configuración de conexión predeterminada.
Agrupar conexiones
Llamar al Connect método del ServerConnection objeto no es necesario. Una vez completadas las operaciones, SMO establece automáticamente las conexiones cuando es necesario y las devuelve al grupo de conexiones. Si llama al Connect método , la conexión no se liberará en el grupo. Para ello, debe usar explícitamente el Disconnect método . Además, puede adquirir una conexión no agrupada ajustando la NonPooledConnection propiedad del ServerConnection objeto .
Aplicaciones multiproceso
Para las aplicaciones multiproceso, se debe utilizar un objeto ServerConnection independiente en cada subproceso.
Conexión a una instancia de SQL Server para RMO
Replication Management Objects (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 mediante el ServerConnection objeto 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 mediante la asignación a la ConnectionContext propiedad 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 ServerConnection objeto.
Toda la información de autenticación para establecer la conexión e iniciar sesión correctamente en el servidor se proporciona en el ServerConnection objeto .
De forma predeterminada, las conexiones se realizan mediante la autenticación de Microsoft Windows. Para usar la autenticación de SQL Server, LoginSecure debe establecerse en False y Login Password debe establecerse en un inicio de sesión y una 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 usar cualquier ejemplo de código que se proporcione, tendrá que elegir el entorno de programación, la plantilla de programación y el lenguaje de programación en el que se va a crear la aplicación. Para obtener más información, vea Creación de un proyecto SMO de Visual C# en Visual Studio .NET.
Conexión a la instancia local de SQL Server mediante la autenticación de Windows en Visual Basic
La conexión a la instancia local de SQL Server no 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 requiere que se recuperen los datos hace que se cree una conexión.
Este ejemplo es código .NET de Visual Basic 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.
Conexión a la instancia local de SQL Server mediante la autenticación de Windows en Visual C#
La conexión a la instancia local de SQL Server no 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 requiere que se recuperen los datos hace que se cree una conexión.
Este ejemplo es código .NET de Visual C# 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.
Conexión a una instancia remota de SQL Server mediante la autenticación de Windows en Visual Basic
Cuando se conecta 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 de .NET de Visual Basic 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.
Conexión a una instancia remota de SQL Server mediante la autenticación de Windows en Visual C#
Cuando se conecta 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 .NET de Visual C# 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.
Conexión a una instancia de SQL Server mediante la autenticación de SQL Server en Visual Basic
Al conectarse a una instancia de SQL Server mediante la autenticación de SQL Server, debe especificar el tipo de autenticación. En este ejemplo se muestra un método alternativo para declarar una variable de objeto ServerConnection, que permite reutilizar la información de conexión.
El ejemplo es código de .NET de Visual Basic que muestra cómo conectarse al remoto y vPassword contienen 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
Conexión a una instancia de SQL Server mediante la autenticación de SQL Server en Visual C#
Al conectarse a una instancia de SQL Server mediante la autenticación de SQL Server, debe especificar el tipo de autenticación. En este ejemplo se muestra un método alternativo para declarar una variable de objeto ServerConnection, que permite reutilizar la información de conexión.
El ejemplo es código .NET de Visual C# que muestra cómo conectarse al remoto y vPassword contienen 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
}
}