Django sql_server.pyodbc将不正确的代码传递给MS SQL Server,以了解何时和分组依据

时间:2018-10-22 20:31:45

标签: sql-server django pyodbc

我是DBA,正在将Django应用程序数据库从Postgres迁移到MS SQL Server。 (这是我必须做的。)

此应用程序正在使用sql_server.pyodbc和用于Linux / Ubuntu的Microsoft SQL Server ODBC驱动程序。除已添加CASE WHEN和GROUP BY的查询外,其他所有操作均有效。

从运行的跟踪信息中,我看到实际上是通过带有MANY参数的sp_prepexec过程将sql传递给SQL Server的。这些参数是变量,在select vs group by中是不同的,从而导致SQL Server方面的错误。

(这只是一个示例,实际查询更为复杂):

select case when col1=@p1 then @p2 end as new_col1, sum(col2) from table group by case when col1=@p3 then @p4 end

实际上@ p1和@ p3是相同的值。 @ p2和@ p4也是如此。但是SQL Server不知道。如果我在postgres上运行相同的查询,这也将失败-因此,我认为这与sql_server.pyodbc包有关。

有人遇到过这个吗?我有什么选择?我的配置有问题吗?

0 个答案:

没有答案