HY090-无效的字符串或缓冲区长度(0)

时间:2019-02-10 22:10:42

标签: python sql-server python-3.x odbc pyodbc

我正在尝试使用具有许多插入语句的.sql文件将数据插入表中。

语句如下:

INSERT [dbo].[table_name] ([col1], [col2], [col3], [col4], [col5], [col6], [col7], [col8], [col9], [col10], [col11], [col12], [col13], [col14], [col15], [col16], [col17], [col18], [col19], [col20], [col21], [col22], [col23], [col24], [col25]) VALUES (N'01111', N'SOME RANDOM NAME', N'ABCDE', N'Times', N'ABCD', N'0#aa:', N'06', N'SM', N'123 Cerfdty', N'NULL', N'SM', N'NULL', N'NULL', N'000', N'o2:aq', N'wef0', N'000', N'xx:xx', N'xxxxx', N'ZM', NULL, NULL, NULL, NULL, NULL)
GO

每个语句单独执行,然后通过读取文件来提交。

但是在完成大约240条插入语句之后,出现以下错误:

  

pyodbc.Error :(“ HY090”,“ [HY090] [Microsoft] [ODBC驱动程序管理器]无效的字符串或缓冲区长度(0)(SQLExecDirectW)”)

  • Python:3
  • pyodbc:4.0.17
  • 操作系统:Windows 10
  • DB:Microsoft SQL Server
  • 驱动程序: [“ SQL Server”, “ SQL Server本机客户端11.0”, “用于SQL Server的ODBC驱动程序13”, '用于SQL Server的ODBC驱动程序17']

我尝试使用上述驱动器进行连接。但是我在所有驱动程序选项中都遇到相同的错误。我正在本地计算机上运行以连接Microsoft SQL Server。

当我开始阅读有关此问题的内容时,我发现在Microsoft下的文档指出:

https://docs.microsoft.com/en-us/sql/odbc/reference/syntax/sqlbindparameter-function?view=sql-server-2017

HY090 |无效的字符串或缓冲区长度(DM)BufferLength中的值小于0。(请参阅SQLSetDescField中SQL_DESC_DATA_PTR字段的说明。)

https://docs.microsoft.com/en-us/sql/odbc/reference/syntax/sqlsetdescfield-function?view=sql-server-2017

一些绑定参数需要设置为清除缓冲区,但是我认为在pyodbc中我看不到任何可用的信息或可用的选项。

我可能明显偏离了此问题的最初原因。

请协助我解决这个问题。

try:
    with open(filename,'r') as sqlfile:
        sql_query = ''
        count =0
        for line in sqlfile:
            if 'GO' in line:
                cursor.execute(sql_query)
                sql_query = ''
                conn.commit()
                count = count +1
                print(count)
            elif 'PRINT' in line:
                display = line.split("'")[1]
                print(display)
            else:
                sql_query = sql_query + line 
        sqlfile.close()
except pyodbc.ProgrammingError as error:
    print(error)

0 个答案:

没有答案