我必须使用老式的ADODB(而不是ADO.NET)来执行包含公共表达式的语句。我正在使用(必须使用)SQLOLEDB提供程序。在从Windows 7 / Windows Server 2008客户端执行DML语句时,一切正常,但在WinXP或Win2K3服务器上执行时却不行。我已经对该例程进行了分析,并发现旧操作系统发送了略有不同的SQL语句。
Win7 + 2008 = exec sp_executesql N'WITH source(Vsl, Cpt, SrcTyp, SrcNum, Opn, JobNum, Qty, Cst, Vry, Reg, Vnt, Sbk) AS ...'
WinXP + Win2K3 = exec sp_executesql N'exec WITH source(Vsl, Cpt, SrcTyp, SrcNum, Opn, JobNum, Qty, Cst, Vry, Reg, Vnt, Sbk) AS ...'
请注意命令文本中额外的“exec”。
似乎旧操作系统上的SQLOLEDB.1版本会错误处理WITH语句,并将其视为需要加上“exec”。
有人能解释一下吗?我是否可以应用SQLOLEDB驱动程序更新到旧操作系统?或者有其他解决方法。