module Sequel::ADO::MSSQL::DatabaseMethods

def begin_transaction(conn, opts={})

to use transactions if an explicit :provider is given.
creates a new native connection for each query. So Sequel only attempts
The ADO adapter's default provider doesn't support transactions, since it
def begin_transaction(conn, opts={})
  super if @opts[:provider]
end

def commit_transaction(conn, opts={})

def commit_transaction(conn, opts={})
  super if @opts[:provider]
end

def execute_ddl(sql, opts={})

Just execute so it doesn't attempt to return the number of rows modified.
def execute_ddl(sql, opts={})
  execute(sql, opts)
end

def execute_dui(sql, opts={})

not supported directly in ruby, and I'm not aware of a workaround.
use pass by reference with an integer variable, which is obviously
Issue a separate query to get the rows modified. ADO appears to
def execute_dui(sql, opts={})
  return super unless @opts[:provider]
  synchronize(opts[:server]) do |conn|
    begin
      log_yield(sql){conn.Execute(sql)}
      res = log_yield(ROWS_AFFECTED){conn.Execute(ROWS_AFFECTED)}
      res.getRows.transpose.each{|r| return r.shift}
    rescue ::WIN32OLERuntimeError => e
      raise_error(e)
    end
  end
end

def rollback_transaction(conn, opts={})

def rollback_transaction(conn, opts={})
  super if @opts[:provider]
end