【问题标题】:Julia ODBC Invalid Cursor StateJulia ODBC 游标状态无效
【发布时间】:2019-10-27 18:21:00
【问题描述】:

对不起一个新手问题。 我正在使用 ODBC.jl 来尝试自动化一些当前的 SQL 查询。我收到“[ODBC] 24000: [Microsoft][ODBC SQL Server Driver]Invalid cursor state”响应。

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

建立我们将使用的库

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) 失败;返回码:-1 => SQL_ERROR") " 然后我检查 REPL 广告,查看 Invalid Cursor 状态响应。 我想做的是通过首先检查和建立数据存储库来使我的查询代码更加位置无关紧要。

欢迎想法,因为此时在线没有用(表大小不是问题,并且没有触发器,因为这是非常新的 SQL 设置)。

谢谢

【问题讨论】:

    标签: odbc julia


    【解决方案1】:

    通过将语句从查询更改为执行,我已经设法解决了这个问题!

    ODBC.execute!(db, "如果 db_id('ReportingTables') 为 null 开始创建数据库 ReportingTables print 'ReportingTables created' end else if db_id('ReportingTables') is not null print 'ReportingTables exists'")

    如 ODBC.jl 文档所述,执行!是我们不期望得到回应的地方。在我看来,正在运行的是生成响应(在 SQL 中创建数据库),但我推测它是对 Julia 的响应。

    这个小改动为我打开了从不同 SQL Server 和数据库推送和拉取数据的能力。

    这可能对我有很大的好处,因为我有 10-15 个不同的表,我目前有一个 SQL 进程来下载、加入和操作。

    根据我的实验,Julia 将数据从一台服务器/数据库复制到另一台服务器/数据库的速度略快。与 SQL 相比,连接似乎更快。我还没有在操纵方面进行试验,但我希望 Julia 在这里也能更快。

    希望这对其他人有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多