Julia ODBC Недопустимое состояние курсора

Извините, вопрос новичка. Я использую ODBC.jl, чтобы попытаться автоматизировать некоторые текущие запросы SQL. Я получаю ответ «[ODBC] 24000: [Microsoft] [Драйвер ODBC SQL Server] Недопустимое состояние курсора».

/******************************************************/

Установите библиотеки, которые мы будем использовать

using ODBC
using DataFrames
using DataStreams

Создать подключение к серверу

Обратите внимание, что для этого необходимо сначала создать соединение ODBC.

db = ODBC.DSN("XX.X.XXXX.2")

Установите удерживающую базу данных на сервере, если она еще не существует.

Это приведет к ошибке, но будет работать, если не присутствует.

TEST = ODBC.query(db, "SET NOCOUNT ON; if db_id('ReportingTables_TEMP') is null begin create database Rate_Tables_TEMP end")

/*************************************************/

Когда я запускаю, я получаю "ODBC.ODBCError("API.SQLFetchScroll(q.stmt, API.SQL_FETCH_NEXT, 0) failed; код возврата: -1 => SQL_ERROR")" и затем я проверяю объявление REPL, вижу состояние Invalid Cursor отклик. Что я хотел бы сделать, так это сделать мой код запроса более безразличным к местоположению, сначала проверив и установив репозиторий для данных.

Приветствуем мысли, поскольку на данный момент онлайн не был полезен (размер таблицы не является проблемой, и нет никаких триггеров, поскольку это очень новая настройка SQL).

Спасибо


person DaKlingons    schedule 27.10.2019    source источник


Ответы (1)


Мне удалось решить этот вопрос, изменив оператор запроса на выполнение!.

ODBC.execute!(db, "если db_id('ReportingTables') имеет значение null начать создание базы данных ReportingTables print 'ReportingTables created' конец иначе, если db_id('ReportingTables') не равен null print 'ReportingTables существует'")

Как указано в документации ODBC.jl, выполнить! где мы не ожидаем ответа. На мой взгляд, то, что выполнялось, генерировало ответ (создание базы данных в SQL), но я предполагаю, что это ответ на Джулию.

Это незначительное изменение открывает для меня возможность передавать и извлекать данные из разных серверов SQL и баз данных.

Это может быть очень полезно для меня, поскольку у меня есть 10-15 различных таблиц, которые в настоящее время я загружаю, присоединяю и манипулирую процессом SQL.

Из моих экспериментов Джулия немного быстрее копирует данные с одного сервера/базы данных на другой. Это кажется быстрее при соединениях по сравнению с SQL. Мне еще предстоит поэкспериментировать с манипуляцией, но я надеюсь, что Джулия и здесь будет быстрее.

Надеюсь, это полезно для других.

person DaKlingons    schedule 31.10.2019