Herstellen einer Verbindung zu einer Instanz von SQL Server
Der erste Programmierschritt beim Erstellen einer SQL Server Management Objects (SMO)-Anwendung beinhaltet das Erstellen einer Instanz des Server-Objekts und das Herstellen einer Verbindung zu einer Instanz von Microsoft SQL Server.
Es stehen drei Möglichkeiten zur Verfügung, um eine Instanz des Server-Objekts zu erstellen und eine Verbindung zu einer Instanz von SQL Server herzustellen. Die erste Methode verwendet eine ServerConnection-Objektvariable, um die Verbindungsinformationen bereitzustellen. Die zweite Methode besteht darin, die Verbindungsinformationen durch die explizite Angabe der Server-Objekteigenschaften anzugeben. Bei der dritten Methode wird der Name der SQL Server-Instanz im Server-Objektkonstruktor angegeben.
Verwenden eines ServerConnection-Objekts
Das Verwenden der ServerConnection-Objektvariable bietet den Vorteil, dass die Verbindungsinformationen wiederverwendet werden können. Deklarieren Sie eine Server-Objektvariable. Deklarieren Sie anschließend ein ServerConnection-Objekt, und geben Sie die Eigenschaften mit Verbindungsinformationen wie dem Namen der SQL Server-Instanz und dem Authentifizierungsmodus an. Übergeben Sie dann die ServerConnection-Objektvariable als Parameter an den Server-Objektkonstruktor. Es wird nicht empfohlen, mehrere Verbindungen zwischen unterschiedlichen Serverobjekten gleichzeitig freizugeben. Verwenden Sie die Copy-Methode, um eine Kopie der vorhandenen Verbindungseinstellungen abzurufen.
Explizites Festlegen von Serverobjekteigenschaften
Alternativ können Sie die Server-Objektvariable deklarieren und den Standardkonstruktor aufrufen. Normalerweise versucht das Server-Objekt, mit sämtlichen Standardverbindungseinstellungen eine Verbindung zur SQL Server-Standardinstanz herzustellen.
Bereitstellen des Namens der SQL Server-Instanz im Serverobjektkonstruktor
Deklarieren Sie die Server-Objektvariable und übergeben Sie den Namen der SQL Server-Instanz als Zeichenfolgenparameter im Konstruktor. Das Server-Objekt stellt mit den Standardverbindungseinstellungen eine Verbindung zur Instanz von SQL Server her.
Verbindungspooling
Es ist in der Regel nicht erforderlich, die Connect-Methode des ServerConnection-Objekts aufzurufen. SMO stellt bei Bedarf automatisch eine Verbindung her und gibt nach dem Abschluss der Vorgänge die Verbindung zum Verbindungspool frei. Wenn die Connect-Methode aufgerufen wird, wird die Verbindung zum Pool nicht freigegeben. Um die Verbindung zum Pool freizugeben, ist ein expliziter Aufruf der Disconnect-Methode erforderlich. Darüber hinaus können Sie eine nicht in einem Pool enthaltene Verbindung anfordern, indem Sie die NonPooledConnection-Eigenschaft des ServerConnection-Objekts festlegen.
Multithreadanwendungen
Für Multithreadanwendungen sollte in jedem Thread ein separates ServerConnection-Objekt verwendet werden.
Herstellen einer Verbindung zu einer Instanz von SQL Server für RMO
Replikationsverwaltungsobjekte (RMO) unterscheiden sich im Aufbau einer Verbindung zu einem Replikationsserver leicht von SMO.
Bei RMO-Programmierobjekten ist es erforderlich, dass eine Verbindung zu einer Instanz von SQL Server mithilfe des durch den Microsoft.SqlServer.Management.Common-Namespace implementierten ServerConnection-Objekts erfolgt. Diese Verbindung zum Server erfolgt unabhängig von einem RMO-Programmierobjekt. Sie wird anschließend entweder während der Erstellung der Instanz oder durch die Zuweisung zur ConnectionContext-Eigenschaft des Objekts an das RMO-Objekts weitergegeben. Dadurch können ein RMO-Programmierobjekt und die Instanzen des Verbindungsobjekts getrennt erstellt und verwaltet werden. Zudem kann ein einzelnes Verbindungsobjekt mit mehreren RMO-Programmierobjekten verwendet werden. Für Verbindungen zu einem Replikationsserver gelten die folgenden Regeln :
Alle Eigenschaften für die Verbindung werden für ein angegebenes ServerConnection-Objekt definiert.
Jede Verbindung zu einer Instanz von SQL Server muss über ein eigenes ServerConnection-Objekt verfügen.
Sämtliche Authentifizierungsinformationen, die zur Herstellung der Verbindung und zur erfolgreichen Anmeldung beim Server erforderlich sind, sind im ServerConnection-Objekt angegeben.
Standardmäßig werden Verbindungen mit der Microsoft Windows-Authentifizierung hergestellt. Um die SQL ServerAuthentifizierung verwenden zu können, müssen LoginSecure auf False und Login sowie Password auf eine gültige SQL Server Kombination von Anmeldeinformationen und Kennwort gesetzt sein. Anmeldeinformationen müssen stets sicher aufbewahrt und behandelt werden. Nach Möglichkeit sollte die Eingabe zur Laufzeit erfolgen.
Die Connect-Methode muss vor Übergabe der Verbindung an ein RMO-Programmierobjekt aufgerufen werden.
Beispiele
Um die bereitgestellten Codebeispiele verwenden zu können, müssen Sie die Programmierumgebung, die Programmiervorlage und die Programmiersprache wählen, in der die Anwendung erstellt werden soll. Weitere Informationen finden Sie in der SQL Server-Onlinedokumentation unter "Vorgehensweise: Erstellen eines Visual Basic SMO-Projekts in Visual Studio .NET" oder "Vorgehensweise: Erstellen eines Visual C# SMO-Projekts in Visual Studio .NET".
Herstellen einer Verbindung zur lokalen Instanz von SQL Server mithilfe der Windows-Authentifizierung in Visual Basic
Das Herstellen einer Verbindung zur lokalen Instanz von SQL Server erfordert nur wenig Code. Für Authentifizierungsmethode und Server werden die Standardeinstellungen verwendet. Sobald das erste Mal Daten abgerufen werden müssen, wird eine Verbindung erstellt.
Der im Beispiel dargestellte Visual Basic .NET-Code stellt mithilfe der Windows-Authentifizierung eine Verbindung zu einer lokalen Instanz von SQL Server her.
'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.
Herstellen einer Verbindung zur lokalen Instanz von SQL Server mithilfe der Windows-Authentifizierung in Visual C#
Das Herstellen einer Verbindung zur lokalen Instanz von SQL Server erfordert nur wenig Code. Für Authentifizierungsmethode und Server werden die Standardeinstellungen verwendet. Sobald das erste Mal Daten abgerufen werden müssen, wird eine Verbindung erstellt.
Der im Beispiel dargestellte Visual C# .NET-Code stellt mithilfe der Windows-Authentifizierung eine Verbindung zur lokalen Instanz von SQL Server her.
{
//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.
Herstellen einer Verbindung zu einer Remoteinstanz von SQL Server mithilfe der Windows-Authentifizierung in Visual Basic
Wenn Sie mithilfe der Windows-Authentifizierung eine Verbindung zu einer Instanz von SQL Server herstellen, müssen Sie den Authentifizierungstyp nicht angeben. Die Windows-Authentifizierung ist als Standard vorgegeben.
Der im Beispiel dargestellte Visual Basic .NET-Code stellt mithilfe der Windows-Authentifizierung eine Verbindung zu einer Remoteinstanz von SQL Server her. Die Zeichenkettenvariable strServer enthält den Namen der Remoteinstanz.
'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.
Herstellen einer Verbindung zu einer Remoteinstanz von SQL Server mithilfe der Windows-Authentifizierung in Visual C#
Wenn Sie mithilfe der Windows-Authentifizierung eine Verbindung zu einer Instanz von SQL Server herstellen, müssen Sie den Authentifizierungstyp nicht angeben. Die Windows-Authentifizierung ist als Standard vorgegeben.
Der im Beispiel dargestellte Visual C# .NET-Code stellt mithilfe der Windows-Authentifizierung eine Verbindung zur Remoteinstanz von SQL Server her. Die Zeichenkettenvariable strServer enthält den Namen der Remoteinstanz.
{
//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.
Herstellen einer Verbindung zu einer Instanz von SQL Server mithilfe der SQL Server-Authentifizierung in Visual Basic
Wenn Sie mithilfe der SQL Server-Authentifizierung eine Verbindung zu einer Instanz von SQL Server herstellen, müssen Sie den Authentifizierungstyp angeben. In diesem Beispiel ist eine Alternativmethode angegeben, bei der Sie eine ServerConnection-Objektvariable deklarieren und so die Verbindungsinformationen wiederverwenden können.
Der Visual Basic .NET-Beispielcode zeigt, wie eine Verbindung mit der Remoteinstanz hergestellt wird und die Anmeldeinformationen und das Kennwort in vPassword enthalten sind.
' 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
Herstellen einer Verbindung zu einer Instanz von SQL Server mithilfe der SQL Server-Authentifizierung in Visual C#
Wenn Sie mithilfe der SQL Server-Authentifizierung eine Verbindung zu einer Instanz von SQL Server herstellen, müssen Sie den Authentifizierungstyp angeben. In diesem Beispiel ist eine Alternativmethode angegeben, bei der Sie eine ServerConnection-Objektvariable deklarieren und so die Verbindungsinformationen wiederverwenden können.
Der Visual C# .NET-Beispielcode zeigt, wie eine Verbindung mit der Remoteinstanz hergestellt wird und die Anmeldeinformationen und das Kennwort in vPassword enthalten sind.
// 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
}
}