Connexion à une instance de SQL Server
La première étape de programmation dans une application SQL Server Management Objects (SMO) consiste à créer une instance de l'objet Server et à établir sa connexion avec une instance de Microsoft SQL Server.
Vous pouvez créer une instance de l'objet Server et établir une connexion avec l'instance de SQL Server de trois manières. La première est d'utiliser une variable objet ServerConnection pour fournir les informations de connexion. La deuxième est de fournir les informations de connexion en définissant explicitement les propriétés de l'objet Server. La troisième est de passer le nom de l'instance de SQL Server dans le constructeur d'objet Server.
Utilisation d'un objet ServerConnection
L'avantage de l'utilisation de la variable objet ServerConnection est que vous pouvez réutiliser les informations de connexion. Déclarez une variable objet Server, puis un objet ServerConnection et définissez les propriétés à l'aide des informations de connexion, telles que le nom de l'instance de SQL Server et le mode d'authentification. Passez ensuite la variable objet ServerConnection en tant que paramètre au constructeur d'objet Server. Le partage simultané de connexions entre différents objets serveur n'est pas recommandé. Utilisez la méthode Copy pour vous procurer une copie des paramètres de connexion existants.
Définition explicite des propriétés d'objet serveur
Vous pouvez également déclarer la variable objet Server et appeler le constructeur par défaut. En l'état, l'objet Server tente de se connecter à l'instance par défaut de SQL Server avec tous les paramètres de connexion par défaut.
Insertion du nom de l'instance de SQL Server dans le constructeur d'objet serveur
Déclarez la variable objet Server et passez le nom de l'instance de SQL Server en tant que paramètre de chaîne dans le constructeur. L'objet Server établit une connexion à l'instance de SQL Server avec les paramètres de connexion par défaut.
Regroupement de connexions
En règle générale, il n'est pas nécessaire d'appeler la méthode Connect de l'objet ServerConnection. SMO établit automatiquement une connexion lorsque cela est nécessaire et libère la connexion vers le groupement de connexions une fois les opérations terminées. Lorsque vous appelez la méthode Connect, la connexion n'est pas libérée vers le groupement. Un appel explicite à la méthode Disconnect est nécessaire pour libérer la connexion vers le groupement. Qui plus est, vous pouvez demander une connexion non regroupée en définissant la propriété NonPooledConnection de l'objet ServerConnection.
Applications multithread
Pour les applications multithread, un objet ServerConnection distinct doit être utilisé dans chaque thread.
Connexion à une instance de SQL Server pour RMO
RMO (Replication Management Objects) utilise une méthode légèrement différente de celle de SMO pour se connecter à un serveur de réplication.
Pour les objets de programmation RMO, il est nécessaire qu'une connexion à une instance de SQL Server soit établie au moyen de l'objet ServerConnection implémenté par l'espace de noms Microsoft.SqlServer.Management.Common. Cette connexion au serveur est établie indépendamment d'un objet de programmation RMO. Elle est ensuite transmise à l'objet RMO lors de la création de l'instance ou par affectation à la propriété ConnectionContext de l'objet. De cette manière, un objet de programmation RMO et les instances d'objet de connexion peuvent être créés et gérés séparément, et un objet de connexion peut être réutilisé avec plusieurs objets de programmation RMO. Les règles suivantes s'appliquent aux connexions à un serveur de réplication :
Toutes les propriétés de la connexion sont définies pour un objet ServerConnection défini.
Chaque connexion à une instance de SQL Server doit posséder son propre objet ServerConnection.
Toutes les informations d'authentification nécessaires pour l'établissement de la connexion et l'ouverture d'une session sur le serveur sont fournies dans l'objet ServerConnection.
Par défaut, les connexions sont établies au moyen de l'authentification Microsoft Windows. Pour l'utilisation de l'authentification SQL Server, la propriété LoginSecure doit avoir la valeur False et Login et Password doivent être définis avec un nom d'ouverture de session et un mot de passe SQL Server valides. Les informations d'identification de sécurité doivent toujours être stockées et gérées de manière sécurisée, et elles doivent être fournies au moment de l'exécution chaque fois que cela est possible.
La méthode Connect doit être appelée avant de passer la connexion à n'importe quel objet de programmation RMO.
Exemples
Pour utiliser un exemple de code fourni, vous devrez sélectionner l'environnement, le modèle et le langage de programmation dans lesquels créer votre application. Pour plus d'informations, consultez « Procédure : créer un projet Visual Basic SMO dans Visual Studio .NET » ou « Procédure : créer un projet Visual C# SMO dans Visual Studio .NET » dans la documentation en ligne de SQL Server.
Connexion à l'instance locale de SQL Server via l'authentification Windows en Visual Basic
La connexion à l'instance locale de SQL Server n'exige pas beaucoup de code. À la place, elle se base sur les paramètres par défaut pour la méthode d'authentification et le serveur. La première opération nécessitant la récupération des données entraîne la création d'une connexion.
Cet exemple de code Visual Basic .NET permet de se connecter à l'instance locale de SQL Server via l'authentification 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.
Connexion à l'instance locale de SQL Server via l'authentification Windows en Visual C#
La connexion à l'instance locale de SQL Server n'exige pas beaucoup de code. À la place, elle se base sur les paramètres par défaut pour la méthode d'authentification et le serveur. La première opération nécessitant la récupération des données entraîne la création d'une connexion.
Cet exemple de code Visual C# .NET permet de se connecter à l'instance locale de SQL Server via l'authentification 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.
Connexion à une instance distante de SQL Server via l'authentification Windows en Visual Basic
Lorsque vous vous connectez à une instance de SQL Server au moyen de l'authentification Windows, vous n'avez pas besoin de spécifier le type d'authentification. La méthode par défaut est l'authentification Windows.
Cet exemple de code Visual Basic .NET permet de se connecter à l'instance distante de SQL Server via l'authentification Windows. La variable chaîne strServer contient le nom de l'instance distante.
'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.
Connexion à une instance distante de SQL Server via l'authentification Windows en Visual C#
Lorsque vous vous connectez à une instance de SQL Server au moyen de l'authentification Windows, vous n'avez pas besoin de spécifier le type d'authentification. La méthode par défaut est l'authentification Windows.
Cet exemple de code Visual C# .NET permet de se connecter à l'instance distante de SQL Server via l'authentification Windows. La variable chaîne strServer contient le nom de l'instance distante.
{
//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.
Connexion à une instance de SQL Server via l'authentification SQL Server en Visual Basic
Lorsque vous vous connectez à une instance SQL Server à l'aide de l'authentification SQL Server, vous devez spécifier le type d'authentification. Cet exemple montre la méthode alternative pour déclarer une variable objet ServerConnection, qui permet de réutiliser les informations de connexion.
Cet exemple de code Visual Basic .NET montre comment se connecter à l'instance distante et vPassword contient les informations d'ouverture de session et le mot de passe.
' 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
Connexion à une instance de SQL Server via l'authentification SQL Server en Visual C#
Lorsque vous vous connectez à une instance SQL Server à l'aide de l'authentification SQL Server, vous devez spécifier le type d'authentification. Cet exemple montre la méthode alternative pour déclarer une variable objet ServerConnection, qui permet de réutiliser les informations de connexion.
Cet exemple de code Visual C# .NET montre comment se connecter à l'instance distante et vPassword contient les informations d'ouverture de session et le mot de passe.
// 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
}
}