关键字 'with' 附近有语法错误。

2023-05-16

最近我在开发中遇到个挺棘手的问题,一段T-SQL语句在开发环境中明明跑得好好的,发布到生产环境却报错敲打

经过排查,只有WinXP下才会出现,即使是在干净的虚拟机环境中。客户端不管是用C#还是Delphi来调用这段T-SQL语句都报错,但在SQL Server Management Studio(SSMS)中运行却正常惊恐

排除开发语言的原因,会不会是SQL Server的版本问题呢疑问又测了一下,不管是SQL Server 2008 R2还是SQL Server 2012都一样尴尬

按报错信息来推断,只可能是SQL Server数据库引擎 的问题,SSMS用的是SQL Server Native Client ,我们的客户端用的是OLEDB,虽然性能上有差别,但不至于报错吧。最近一次更新使用了新的with ... as ...语法,难道是这个引起的发火

代码比较长,举个简单例子:

with m as (select * from test)
select id from m

with也就是公用表表达式 (Common Table Expression, CTE),SQL Server 从2005开始支持,符合ANSI SQL 标准,OLEDB作为通用的数据库引擎应该能支持。

查了下万能的Stack Overflow,有救了大笑,->>传送门。那位仁兄用VBScript通过OLEDB方式调用也出过类似的问题,解决办法是在with语句之前加个分号“;”。

看来真的是WinXP中的OLEDB引擎的Bug引起,现在维保过了微软估计也不打算更新,这Bug肯定永无修复之日再见

大家感受下:


1、建个临时表Test,数据库随便建一个,然后在WinXP中测下。

private void button1_Click(object sender, EventArgs e)
        {
            OleDbConnection conn = new OleDbConnection("Provider=SQLOLEDB.1;Password=12345;Persist Security Info=True;User ID=sa;Initial Catalog=Test;Data Source=localhost");
            conn.Open();
            OleDbCommand cmd=conn.CreateCommand();
            cmd.CommandText = " with m as (select * from test)"; //CTE
            cmd.CommandText+=" select * from m";
            OleDbTransaction ts = conn.BeginTransaction();
            cmd.Transaction = ts;
            cmd.ExecuteNonQuery();
            ts.Commit();
            MessageBox.Show("Done!");
        }

2、把cmd.CommandText = " with m as (select * from test)"; //CTE 这句改成 cmd.CommandText = ";with m as (select * from test)"; //CTE


其实彻底的解决办法,就是不用OLEDB,改成SQL Server Native Client,但旧代码改起来得费不少时间抓狂

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关键字 'with' 附近有语法错误。 的相关文章

  • Github Page 个人主页——项目部署

    本人博客 一 前言 想搭建自己的网站吗 xff1f 通常需要买一台服务器 xff0c 购买一个域名进行备案后 xff0c 解析到自己的服务器 xff0c 还要搭建环境 xff0c 后期运维等等 本文提供一种基于 Github Page 服务
  • Github Page 个人主页——CDN加速

    原文地址 1 前言 前两篇文章介绍了 如何部署静态网站 以及 给网站自定义域名 xff0c 到目前为止 xff0c 您已经拥有一个使用自己的域名的网站了 在访问个人网页时 xff0c 实质上是去Github的服务器上取资源的 xff0c 但
  • Github Page 个人主页——Hexo博客

    原文地址 一 前言 在前三篇文章介绍了如何部署一个属于自己的站点网页 xff0c 但是只有个人主页有些单调 xff0c Github Page 的本质是部署web站点 xff0c 所以不仅可以部署个人主页 xff0c 还可以将自己的博客部署
  • Android 开发——环境搭建

    原文地址 一 前言 1 1 Android Studio 简介 Android Studio 是谷歌推出的一个Android集成开发工具 xff0c 基于IntelliJ IDEA 类似 Eclipse ADT xff0c Android
  • 【Matlab】音频信号谱分析及椭圆滤波处理

    前言 一个使用matlab对音频信号进行频谱分析及滤波处理的学习笔记 xff0c 本文使用的是椭圆滤波器 音频下载 demo mp3 频谱分析 读取音频信号进行傅里叶变换 x fs 61 audioread 39 D demo mp3 39
  • 【Matlab】BPSK二进制相移键控波形生成

    前言 一个通信原理课程中使用Matlab生成BPSK波形的实验笔记 内容 设发送二进制信息为10011101 xff0c 码元速率为1波特 xff0c 载波 sin wt xff0c 幅值为1 xff0c 初始相位为0 当载波频率为2Hz
  • 【转】【面试】如果你这样回答“什么是线程安全”,面试官都会对你刮目相看...

    有读者跟我说 xff0c 喜欢看我的文章 xff0c 说很容易读 xff0c 我确实在易读性上花费的心思不亚于在内容上 因为我不喜欢一上来就堆很多东西 xff0c 而且把简单的东西搞得复杂人人都会 xff0c 但是把复杂的东西讲的简单 xf
  • 【Matlab】2FSK二进制频移键控波形生成

    前言 一个通信原理课程中使用Matlab生成2FSK波形的实验笔记 内容 设发送二进制信息为10011101 xff0c 码元速率为1波特 xff0c 载波 cos wt xff0c 幅值为1 xff0c 初始相位为0 当载波频率分别为3H
  • 【Matlab】QPSK四进制绝对相移调制波形生成

    前言 一个通信原理课程中使用Matlab生成QPSK波形的实验笔记 内容 设发送二进制信息为10011101 xff0c 码元速率为1波特 xff0c 载波 sin wt xff0c 幅值为1 xff0c 初始相位为0 当载波频率为2Hz
  • 【Matlab】DQPSK四进制相对相移调制波形生成

    前言 一个通信原理课程中使用Matlab生成DQPSK波形的实验笔记 内容 设发送二进制信息为10011101 xff0c 码元速率为1波特 xff0c 载波 sin wt xff0c 幅值为1 xff0c 初始相位为0 当载波频率为2Hz
  • archlinuxmanjaro安装中文输入法(fcitx5)

    archlinux manjaro安装中文输入法 xff08 fcitx5 xff09 装好了manjaro xff0c 但是他并没有我们的母语中文的输入法 xff0c 这要怎么办呢 xff1f 当然是自己装了 xff08 又水了好几句 x
  • vm安装centos7系统后,使用ifconfig命令 ens33 没有IP地址

    这个问题目前发现俩种情况 1 没有配置ens33文件 2 配置了 ens33文件 xff0c 重启后又没有ip地址了 问题一解决 xff1a 安装好centos7后 xff0c 使用ifconfig命令 xff0c 发现 ens33 没有i
  • 操作系统:用c++模拟生产者消费者问题

    操作系统 xff1a 用c 43 43 模拟生产者消费者问题 一 实验目的 xff1a 通过实验模拟生产者与消费者之间的关系 xff0c 了解并掌握他们之间的关系及其原理 由此增加对进程同步的问题的了解 二 实验要求 xff1a 每个进程有
  • Java实现快排(图文讲解)

    文章目录 Java实现快速排序快速排序原理快速排序一次划分图文演示过程整个快速排序的过程具体Java代码实现简结快速排序的性能 Java实现快速排序 冲鸭 xff0c 装上涡轮增鸭 xff0c 开始学习快速排序算法吧 xff01 xff08
  • Repository ‘base‘: Error parsing config: Error parsing “gpgkey = ‘file“///etc/pki/rpm-gpg/RPM-GPG-KE

    Repository base Error parsing config Error parsing gpgkey 61 39 file etc pki rpm gpg RPM GPG KEY CentOS 7 34 No closing
  • Ranger之对资源策略配置的导入导出(五)

    导入和导出基于资源的策略 您可以在恢复操作期间或将策略从测试集群移动到生产集群时 xff0c 从Ranger Admin UI 用于集群弹性 备份 导出和导入策略 您可以导出 导入特定的策略子集 例如那些属于特定资源或用户 组的策略 xff
  • gcc编译时报错 fatal error: stdio.h: 没有那个文件 解决方法

    在linxu系统中 xff0c 编写c语言程序我们需要使用到GCC编译器 但是当我们成功安装后使用的时候 xff0c 编译程序 xff0c 例如执行编译命令 xff1a gcc hello c o hello out 结果报错了 xff0c
  • Aug.2019_Memory

    转眼间这半个月的时光已经过去了 xff0c 现在就像妈说的 xff0c 生活又要回归正常了 尽管我一直不愿意去承认说前半个月的时光是一种不正常的生活 xff0c 但有一点是我无法否认的 xff0c 那就是那些人和那些事所带给我的 想想最初自
  • 浅析大数据与经济学

    浅析大数据与经济学 摘 要 文章从大数据的发展现状分析入手 讨论了大数据对传统经济学带来的机遇与挑战 运用大数据经济学的概念 xff0c 分析了大数据经济学与信息经济学 信息技术等相关学科的关系 并将理论研究与实践应用实时地统一在一起 最后
  • 数据结构_队列应用-医院挂号看病(C语言)

    通过简单的实现医院挂号看病功能 xff0c 实现对数据结构队列的简单应用 本设计中医院挂号看病主要有病人挂号 查看就诊队列 就诊 下班等功能 span class token macro property span class token

随机推荐

  • Win10系统安装教程

    Win10安装教程 准备 xff1a 一个不小于8G的U盘 xff0c 一台可以上网的电脑 第一步 xff0c 打开浏览器 xff0c 搜索 Win10下载 找到微软官方的下载网址 xff0c 我这里有两个 xff0c 一个中文页面一个英文
  • 本地连接服务器mysql非常慢

    出现问题 经常使用navicat等软件连接服务器的mysql数据库很长时间 xff0c 才能连接上 xff0c 在项目中 xff0c 进行数据库操作 xff0c 也会很慢 原因分析 默认情况下 xff0c mysql会自动开启DNS反向解析
  • uniapp实现微信登录

    项目描述 使用uniapp框架编写微信小程序 xff0c 使用自己的后端 xff0c 实现微信登陆功能 登录流程 此处参考微信官网提供的 小程序登录流程时序 如下图 xff1a 图片来源 xff1a 微信官方API文档 所以登录的流程即 x
  • 程序设计大赛试题及答案

    Problem A 比赛须知 Description 小邯来参加邯郸学院大学生程序设计竞赛 由于这场比赛在线上举行 xff0c 有很多需要遵守的规则 有一条规则是 xff0c 为了避免对题目内容相关的提问被无关的提问淹没 xff0c 所有和
  • 使用uni-app框架中uni.chooseAddress()接口,获取不到用户收货地址

    错误描述 在我们使用uni app框架或微信原生开发微信小程序时 使用到uni chooseAddress OBJECT 接口获取用户收货地址时 无法跳转到收货地址页面获取 打印接口返回信息 显示 chooseAddress fail th
  • 软件工程-部分测试概念

    1 黑盒测试法 黑盒测试法也称功能测试 xff0c 这种方法将被测程序看成一个黑盒子 xff0c 测试人员完全不考虑程序的内部结构和处理过程 也就是说 xff0c 黑盒测试是在程序接口进行的测试 xff0c 它只检查程序功能是否按照需求规格
  • linux下安装libpcap

    1 安装GCC xff1a yum y install gcc c 43 43 2 安装flex xff1a yum y install flex 没有flex xff0c 直接安装libpcap会提示 34 Your operating
  • Spring练习题

    作业 简答题 Spring 是什么 xff1f 谈谈你对IOC的理解简述Spring IOC的启动过程说出bean工厂创建bean的三种方式 xff1f 在Spring中 xff0c bean的注入有几种方式 xff0c 各是什么 xff1
  • CentOS 7 安装XAMPP

    以下步骤如果包含Linux命令 xff0c 没有特别说明均在root下运行 1 首先安装CentOS xff0c 下载ISO的网址如下 xff0c 挑选最快的镜像站点下载 xff1a http isoredirect centos org
  • 实验二 使用CSS样式美化购物列表页面中的菜单导航以及商品展示

    一 实验目的 掌握CSS定义文字 背景图片 超链接控制 列表等常用属性的设置 二 实验要求 在购物列表页面中 xff0c 通过 lt ul gt 标签来实现菜单导航栏 xff0c 然后使用css样式控制菜单栏的位置和样式 xff0c 效果如
  • SpringBoot+Vue项目准妈妈孕期交流平台

    文末获取源码 开发语言 xff1a Java 开发工具 IDEA Eclipse 数据库 MYSQL5 7 使用框架 springboot 43 vue JDK版本 xff1a jdk1 8 前言介绍 系统实现管理员 xff1a 首页 个人
  • SpringBoot+Vue项目社区团购系统

    文末获取源码 开发语言 xff1a Java 框架 xff1a springboot JDK版本 xff1a JDK1 8 服务器 xff1a tomcat7 数据库 xff1a mysql 5 7 8 0 数据库工具 xff1a Navi
  • SSM+Vue+Element-UI实现员工工资管理系统

    文末获取源码 开发语言 xff1a Java 框架 xff1a ssm JDK版本 xff1a JDK1 8 服务器 xff1a tomcat7 数据库 xff1a mysql 5 7 8 0 数据库工具 xff1a Navicat11 开
  • 【Android Studio】使用Binding代替R.layout.xxx显示kotlin.UninitializedPropertyAccessException(已解决)

    初始代码 xff1a span class token keyword class span span class token class name MainActivity span span class token operator s
  • vim编辑器重要快捷键及vim设置

    一 快捷键 1 全选 xff1a ggVG 2 跳转到文本最后一行 xff1a shift 43 g 3 跳转到文本第一行 xff1a gg 4 跳转到光标所选行的行首位置 xff1a 0 5 跳转到光标所选行的行尾位置 xff1a shi
  • 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系

    使用 sudo apt get install 安装软件时 xff0c 出现错误 无法修正错误 xff0c 因为您要求某些软件包保持现状 xff0c 就是它们破坏了软件包间的依赖关系 错误的主要原因是 xff0c 系统中已经安装了被依赖的包
  • import _ssl # if we can‘t import it, let the error propagate

    转载链接 xff1a https blog csdn net u013398960 article details 107524068 实测有用
  • vscode 终端美化

    1 进入网站 Base16 Terminal Colors for Visual Studio Code 2 选择自己喜欢的主题 点击Copy to clipboard 3 打开vscode 设置 输入setting 在 settings
  • vue项目,如何关闭eslint检测?多种解决办法

    点击下方查看博主 博主
  • 关键字 'with' 附近有语法错误。

    最近我在开发中遇到个挺棘手的问题 xff0c 一段T SQL语句在开发环境中明明跑得好好的 xff0c 发布到生产环境却报错 经过排查 xff0c 只有WinXP下才会出现 xff0c 即使是在干净的虚拟机环境中 客户端不管是用C 还是De