    # File lib/active_record/connection_adapters/sqlserver_adapter.rb, line 242
          def columns(table_name, name = nil)
            return [] if table_name.blank?
            table_name = table_name.to_s if table_name.is_a?(Symbol)
            table_name = table_name.split('.')[-1] unless table_name.nil?
            sql = "SELECT COLUMN_NAME as ColName, COLUMN_DEFAULT as DefaultValue, DATA_TYPE as ColType, IS_NULLABLE As IsNullable, COL_LENGTH('#{table_name}', COLUMN_NAME) as Length, COLUMNPROPERTY(OBJECT_ID('#{table_name}'), COLUMN_NAME, 'IsIdentity') as IsIdentity, NUMERIC_SCALE as Scale FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '#{table_name}'"
            # Comment out if you want to have the Columns select statment logged.
            # Personally, I think it adds unnecessary bloat to the log.
            # If you do comment it out, make sure to un-comment the "result" line that follows
            result = log(sql, name) { @connection.select_all(sql) }
            #result = @connection.select_all(sql)
            columns = []
            result.each do |field|
              default = field[:DefaultValue].to_s.gsub!(/[()\']/,"") =~ /null/ ? nil : field[:DefaultValue]
              type = "#{field[:ColType]}(#{field[:Length]})"
              is_identity = field[:IsIdentity] == 1
              is_nullable = field[:IsNullable] == 'YES'
              columns << ColumnWithIdentity.new(field[:ColName], default, type, is_identity, is_nullable, field[:Scale])
            end
            columns
          end