我是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包有关。
有人遇到过这个吗?我有什么选择?我的配置有问题吗?