run .sql file over a collection of databases on an instance

//reference the following assemplyies of SMO

Microsoft.SqlServer.Management.Sdk.Sfc

Microsoft.SqlServer.ConnectionInfo

Microsoft.SqlServer.Smo

// using Microsoft.SqlServer.Management.Common;

//using Microsoft.SqlServer.Management.Smo;

    public static void  ExecuteScript(string fname, List<string> databases)
    {
        string script = File.ReadAllText(fname);
        ServerConnection conn = new ServerConnection("server-name/instance", "user", "password");

        Server SMOServer = new Server(conn);

        // foreach (Database db in SMOServer.Databases) //for all databases in server
        foreach (var dbname in databases)
        {               
            var db = SMOServer.Databases[dbname];
            var ds = db.ExecuteWithResults(script); //if you want query result as a Dataset
          //db.ExecuteNonQuery(script); // if you run non return query result, e.g update/insert/delete
        }
        conn.Disconnect();
    }

Leave a Comment