Mit der Methode GetSqlServerInstanceDataBases() können alle Datenbanken einer MS SQL Serverinstanz ermittelt werden. Die Methode gibt eine generische Liste von Datenbank - Objekten zurück.
Für diese Ermittlung braucht es folgende Bibliotheken:
Microsoft.SqlServer.ConnectionInfo
Microsoft.SqlServer.Smo
Man muss folgende Namespaces einbinden :
Microsoft.SqlServer.Management.Smo
Microsoft.SqlServer.Management.Common
/// <summary>
/// Gibt alle Datenbanken einer MS Sql Server Instanz zurück
/// </summary>
/// <param name="instance">Serverinstanz</param>
/// <param name="login">Benutzername</param>
/// <param name="password">Passwort</param>
/// <param name="trustedConnection">Trusted Connection (Windows Authentication)</param>
/// <returns>Gibt eine Liste der Datenbanken zurück</returns>
public static List<Database> GetSqlServerInstanceDataBases(
string instance,
string login,
string password,
bool trustedConnection)
{
//Datenbankliste erstellen
List<Database> databases = new List<Database>();
// Verbindung zum SQL-Server über SMO aufbauen
ServerConnection serverConnection = new ServerConnection();
serverConnection.ServerInstance = instance;
serverConnection.LoginSecure = trustedConnection;
//Falls Trusted Connection nicht ausgewählt ist --> Logindaten setzen
if (!trustedConnection)
{
serverConnection.Login = login;
serverConnection.Password = password;
}
//Server definieren
Server server = new Server(serverConnection);
try
{
// Verbindung aufbauen
server.ConnectionContext.Connect();
// Datenbanken abfragen
foreach (Database database in server.Databases)
databases.Add(database);
}
catch (ConnectionFailureException connectEx)
{
throw new ConnectionFailureException("Probleme beim Verbinden auf den Server " + instance + ".",
connectEx.InnerException);
}
finally
{
try
{
// Verbindung zum SQL-Server abbauen
server.ConnectionContext.Disconnect();
}
catch(SmoException smoExDis)
{
throw new SmoException("Fehler beim Auflösen der Verbindung mit dem Server " + instance + ".",
smoExDis.InnerException);
}
}
//Datenbanken zurückgeben
return databases;
}
Kommentare zum Snippet