Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

R DBI ODBC грешка:nanodbc/nanodbc.cpp:3110:07009:[Microsoft][ODBC драйвер 13 за SQL Server]Невалиден индекс на дескриптор

Аз също се боря с този проблем от няколко месеца. Въпреки това попаднах на решение, което може да помогне и на вас.

Накратко, проблемът възниква, когато определени текстови колони не се появяват след целочислени/числови колони. Когато колоните не са подравнени правилно в заявката, грешка от invalid index се прехвърля и връзката ви може да замръзне. Проблемът е как да разбера какво да сложа в края на заявката си?

За да се определи това, обикновено може да се изследва колона с помощта на class() или typeof() . За да разгледате такава информация от базата данни, можете да използвате заявка като:

dbColumnInfo(dbSendQuery(con, "SELECT * from schema.table")) # You may not require the schema part...

Това ще върне таблица с поле за тип за всяка колона в набора от данни, който представлява интерес. След това можете да използвате тази таблица като индекс за сортиране на select() изявление. Конкретната ми трудност е, че type полето в таблицата е всички числа! Забелязах обаче, че всяка колона с отрицателно число, когато е поставена в края на оператора за избор, коригира заявката ми и мога да изтегля цялата таблица добре. Например, моето пълно решение :

# Create my index of column types (ref to the current order)
index <- dbColumnInfo(dbSendQuery(con, "SELECT * from schema.table"))
index$type <- as.integer(index$type) # B/c they are + and - numbers!

# Create the ref to the table
mySQLTbl <- tbl(con, in_schema("schema", "tablename"))

# Use the select statement to put all the + numbered columns first!
mySQLTbl %>%
  select(c(which(index$type>=0),
                 which(index$type<0)))

Що се отнася до причината защо това се случва, не съм сигурен и нямам привилегиите за достъп до данни, за да копая много по-дълбоко в моя случай на употреба



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 2 начина за връщане на всички дефинирани от потребителя функции в база данни на SQL Server

  2. TABLOCK срещу TABLOCKX

  3. Топ 9 съвета за настройка на вашия SQL сървърен клъстер

  4. разделете алфа и числови с помощта на sql

  5. Как да заменя няколко знака в SQL?