Feedback

C# - SMO : Alle Datenbanken einer Serverinstanz abfragen

Veröffentlicht von am 01.05.2007
(2 Bewertungen)
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
GFU-Schulungen  [Anzeige]

VB.NET Komplett

Sie stehen vo der Aufgabe, individuelle Anwendungen für Windows zu schreiben. Hier ist VB.NET die optimale Sprache. Sie erlernt sich recht leicht und passt sich komplett in die .NET Umgebung von Microsoft ein. Nach der Schulung entwickeln Sie anwenderfreundliche Programme in VB.NET . Mit den objektorientierten Modellen in VB.NET erzeugen Sie außerdem wiederverwendbare Komponenten.

Visual Studio Team Foundation Server 2017/2015 (TFS) - Komplett 

/// <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

 

Logge dich ein, um hier zu kommentieren!