Unfortunately, DBI's ADO driver does not support the columns method. This causes a failure in Kansas when trying to select columns. C:\ruby\lib\ruby\site_ruby/kansas/Table.rb:49:in `key' result = self.class.primaries.collect{|f| @row[f.to_s]} C:\ruby\lib\ruby\site_ruby/kansas/Database.rb:481:in `add_object' if cachedObj = has_object?(object.class, object.key) C:\ruby\lib\ruby\site_ruby/kansas/Database.rb:232:in `select' results << add_object(tables[0].new.load(row.to_h, self, read_only)) C:\ruby\lib\ruby\site_ruby/kansas/Database.rb:230:in `fetch' rawResults = @dbh.select_all(sql) do |row| C:\ruby\lib\ruby\site_ruby\1.8/dbi/dbi.rb:846:in `each' fetch(&p) C:\ruby\lib\ruby\site_ruby\1.8/dbi/dbi.rb:673:in `select_all' sth.each(&p) C:\ruby\lib\ruby\site_ruby\1.8/dbi/dbi.rb:671:in `execute' execute(stmt, *bindvars) do |sth| C:\ruby\lib\ruby\site_ruby\1.8/dbi/dbi.rb:671:in `select_all' execute(stmt, *bindvars) do |sth| C:\ruby\lib\ruby\site_ruby/kansas/Database.rb:230:in `select' rawResults = @dbh.select_all(sql) do |row| The ADO Connection object does have a OpenSchema method to collect the columns. Perhaps this could be used to add the columns method in ADO.rb.