pyodbc 存储过程/Microsoft SQL 服务器错误 42000
pyodbc stored procedures / Microsoft SQL Server error 42000
我正在编写一个脚本来自动执行文件加载过程。所以,我自然需要执行一些已经存在的存储过程。我正在使用 pyodbc 连接到我的数据库。我可以从数据库 SELECT
完全正常,但是当我尝试从数据库执行时我得到这个错误:
pyodbc.ProgrammingError: ('42000', '[42000] [Microsoft][SQL Server Native Client 10.0]
Syntax error, permission violation, or other nonspecific error (0) (SQLExecDirectW)')
我无法弄清楚这里的问题是什么 - 用户拥有完全的数据库管理员权限,根据 pyodbc 官方文档所说的语法是正确的。
print("Executing SP")
conn.execute('{EXEC TEMP.s_p_test}')
print("SP Executed.")
此处,TEMP
是该特定数据库中存储过程类型的架构。即,它是存储过程的全名。我觉得我只是想念这可能是非常明显的东西。
我尝试了一些方法来修复它。正如@Brian Pendleton 所建议的,我曾尝试将通过 UID
和 PWD
定义的显式数据库用户更改为 trusted_connection=True
。不幸的是,这并没有改变任何东西。
但是,出于好奇,我决定看看从函数调用中去掉大括号会做什么。执行立即生效并产生了所需的输出。 pyodbc 的 wiki 上的文档似乎要么显示了错误的示例,要么我发现了一个我不知道如何复制的错误,因为我不知道是什么让我的情况异常。
或者,换句话说,而不是
conn.execute('{EXEC TEMP.s_p_test}')
我用过
conn.execute('EXEC TEMP.s_p_test')
我正在编写一个脚本来自动执行文件加载过程。所以,我自然需要执行一些已经存在的存储过程。我正在使用 pyodbc 连接到我的数据库。我可以从数据库 SELECT
完全正常,但是当我尝试从数据库执行时我得到这个错误:
pyodbc.ProgrammingError: ('42000', '[42000] [Microsoft][SQL Server Native Client 10.0]
Syntax error, permission violation, or other nonspecific error (0) (SQLExecDirectW)')
我无法弄清楚这里的问题是什么 - 用户拥有完全的数据库管理员权限,根据 pyodbc 官方文档所说的语法是正确的。
print("Executing SP")
conn.execute('{EXEC TEMP.s_p_test}')
print("SP Executed.")
此处,TEMP
是该特定数据库中存储过程类型的架构。即,它是存储过程的全名。我觉得我只是想念这可能是非常明显的东西。
我尝试了一些方法来修复它。正如@Brian Pendleton 所建议的,我曾尝试将通过 UID
和 PWD
定义的显式数据库用户更改为 trusted_connection=True
。不幸的是,这并没有改变任何东西。
但是,出于好奇,我决定看看从函数调用中去掉大括号会做什么。执行立即生效并产生了所需的输出。 pyodbc 的 wiki 上的文档似乎要么显示了错误的示例,要么我发现了一个我不知道如何复制的错误,因为我不知道是什么让我的情况异常。
或者,换句话说,而不是
conn.execute('{EXEC TEMP.s_p_test}')
我用过
conn.execute('EXEC TEMP.s_p_test')