SQL-SMO

Diversas vezes me perguntaram como é possível acessar os dados de metadados, de gerenciamento e manipulação de objetos de um banco de dados SQL Server. Para isso, podemos recorrer ao tradicional SqlConnection e SqlCommand, executando queries, stored procedures e views que trazem informações a respeito destes recursos.

Como alternativa, a Microsoft disponibilizou um conjunto de tipos que permitem o acesso e manipulação, de forma tipada, à um servidor SQL Server, podendo extrair informações ou até mesmo criar novos objetos dentro do mesmo. O namespace em questão é o Microsoft.SqlServer.Management.Smo e está contido no assembly Microsoft.SqlServer.Smo.dll que, em conjunto com alguns outros, permitem acessar um servidor e extrair tais informações, como é mostrado através do exemplo abaixo:

foreach (Database db in new Server(“localhost”).Databases)
{
    Console.WriteLine(db.Name);

    foreach (Table t in db.Tables)
    {
        Console.WriteLine(“t” + t.Name);

        foreach (Column c in t.Columns)
        {
            Console.WriteLine(“tt” + c.Name);
        }
    }
}

Anúncios