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