Connexion à une instance de SQL Server
La première étape de programmation d’une application SMO (SQL Server Management Objects) consiste à créer un instance de l’objet Server et à établir sa connexion à un instance de Microsoft SQL Server.
Vous pouvez créer une instance de l’objet Server et établir une connexion à la 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 consiste à passer le nom du SQL Server instance dans le constructeur d’objetServer.
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, Ensuite, déclarez un ServerConnection objet et définissez des propriétés avec des informations de connexion telles que le nom du 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 à la 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 Server variable objet et transmettez le nom SQL Server instance en tant que paramètre de chaîne dans le constructeur. L’objet Server établit une connexion avec le 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.
Les objets de programmation RMO nécessitent qu’une connexion à un instance de SQL Server soit établie à l’aide de l’objet ServerConnection implémenté par l’espace Microsoft.SqlServer.Management.Common
de noms. 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 à un instance de SQL Server doit avoir son propre ServerConnection objet.
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 utiliser l’authentification SQL Server, LoginSecure doit avoir la valeur False et LoginPassword doit être défini sur un SQL Server d’ouverture de session et un mot de passe valides. Les informations d’identification de sécurité doivent toujours être stockées et gérées de manière sécurisée, et 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 qui est fourni, vous devrez choisir l'environnement de programmation, le modèle de programmation et le langage de programmation dans lequel 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 à la instance locale de SQL Server ne nécessite 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 est du code .NET Visual Basic qui se connecte à la instance locale de SQL Server à l’aide de l’authentification Windows.
Connexion à l'instance locale de SQL Server via l'authentification Windows en Visual C#
La connexion à la instance locale de SQL Server ne nécessite 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 est du code Visual C# .NET qui se connecte au instance local de SQL Server à l’aide de 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 à un instance de SQL Server à l’aide 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 est du code .NET Visual Basic qui se connecte au instance distant de SQL Server à l’aide de l’authentification Windows. La variable de chaîne strServer contient le nom du instance distant.
Connexion à une instance distante de SQL Server via l'authentification Windows en Visual C#
Lorsque vous vous connectez à un instance de SQL Server à l’aide 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 est du code Visual C# .NET qui se connecte au instance distant de SQL Server à l’aide de l’authentification Windows. La variable de chaîne strServer contient le nom du instance distant.
{
//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 à un instance d’SQL Server à l’aide de l’authentification SQL Server, vous devez spécifier le type d’authentification. Cet exemple montre l'autre méthode avec laquelle vous pouvez déclarer une variable objet ServerConnection qui permet de réutiliser les informations de connexion.
L’exemple est du code .NET Visual Basic qui montre comment se connecter au mot de passe distant et vPassword contenant l’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 à un instance d’SQL Server à l’aide de l’authentification SQL Server, vous devez spécifier le type d’authentification. Cet exemple montre l'autre méthode avec laquelle vous pouvez déclarer une variable objet ServerConnection qui permet de réutiliser les informations de connexion.
L’exemple est du code Visual C# .NET qui montre comment se connecter au mot de passe distant et vPassword contenant l’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
}
}