You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行msdb.dbo.sp_send_dbmail遇Msg22050:sqlcmd库初始化失败求助

错误Msg 22050的解决方法

你遇到的Msg 22050, Level 16, State 1, Line 0错误,核心原因是sp_send_dbmail的@query参数中,字符串常量未正确转义单引号。

修改后的代码

IF EXISTS (SELECT * FROM [StagingMX].[dbo].[_CVA] 
           WHERE DATEDIFF(DAY, [Completion time], GETDATE()) = 1 
             AND [A] = 'IQQ' AND [B] = 'MDD')
BEGIN
    EXEC msdb.dbo.sp_send_dbmail 
              @profile_name = 'Admin', 
              @recipients = 'something@gmail.com',
              @body = 'Good Morning,',
              @query = 'SELECT * FROM [StagingMX].[dbo].[_CVA] WHERE DATEDIFF(day, [Completion time], GETDATE()) = 1 and [A] = ''IQQ'' AND [B] = ''MDD'';',
              @subject = 'Customer Voice';
END

关键说明

  • 在SQL字符串嵌套场景中(把SQL语句作为字符串传入@query),单引号需要用两个单引号转义,所以原查询里的'IQQ'要写成''IQQ'',否则会导致SQL语法解析失败,触发sqlcmd初始化错误。
  • 你单独执行查询时正常,是因为直接写的[A] = 'IQQ',不存在字符串嵌套的转义需求;而sp_send_dbmail的@query参数会把传入的内容当作字符串解析,必须转义单引号才能正确识别字符串常量。
  • 之前的TOP(1)查询能运行,是因为该语句没有需要单引号包裹的字符串常量,不存在语法解析问题。

内容的提问来源于stack exchange,提问作者Raúl Vélez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 21:40:35