Feedback

C# - SMO : Alle Datenbanken einer Serverinstanz abfragen

Veröffentlicht von am 5/1/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!