【问题标题】:Error in exec master xp_cmdshell BCP queryoutexec master xp_cmdshell BCP queryout 中的错误
【发布时间】:2019-07-05 07:50:37
【问题描述】:

我需要从 SQL 查询创建一些 XML。我需要增加一个名称文件,但使用我的代码系统返回错误

Messaggio 102、livello 15、stato 1、riga 89
'+' 附近的语法不正确。

这个错误是指

中的代码部分
exec master.. `'+@num'+`

代码下方;变量@num 的类型为nvarchar

SET @num = (SELECT CAST([incr_num] AS NVARCHAR(10)) FROM [DB01].[dbo].[NUM_XML])

EXEC master..xp_cmdshell 'bcp "SELECT @header,@inland FOR XML RAW(''''),ROOT(''root''), ELEMENTS, TYPE" queryout "\\server01\TEMP_SW\XML_TMS\test_'+@num+'.xml" -U xx -P xxxxx -c -C ANSI -t;'

我尝试在另一个变量中插入所有路径并将这个新变量附加到 exec 函数中,但结果没有改变

你能帮帮我吗?

【问题讨论】:

    标签: sql sql-server bcp


    【解决方案1】:

    先创建命令文本

    declare @cmd varchar(2000) = 'bcp "SELECT @header,@inland FOR XML RAW(''''),ROOT(''root''), ELEMENTS, TYPE" queryout "\\server01\TEMP_SW\XML_TMS\test_'+@num+'.xml" -U xx -P xxxxx -c -C ANSI -t;' ;
    exec master..xp_cmdshell @cmd;
    

    【讨论】:

    • 使用您的解决方案,系统返回错误 Messaggio 214, livello 16, stato 201, procedura xp_cmdshell, riga 1 [riga iniziale del batch 0] 过程需要参数 'command_string' 类型为 'varchar'。
    • 请看我下面的答案。随着您的解决方案出现了另一个问题
    • @FrancescoIsetto .. 这是另一个与 xml 相关的问题,与 xp_cmdshell 无关。将其作为另一个 SO 问题发布,提供表定义和示例数据。
    【解决方案2】:

    现在如果我执行单个查询

    SELECT @header,@inland FOR XML RAW(''),ROOT('root'), ELEMENTS, TYPE
    

    我收到正确的 XML 数据。

    但是如果我将查询插入到 exec master..xp_cmdshell

    declare @cmd varchar(2000) = 'bcp "SELECT @header,@inland FOR XML RAW(''''),ROOT(''root''), ELEMENTS, TYPE" queryout "\\server01\TEMP_SW\XML_TMS\test_'+@num+'.xml" -U xx -P xxxxx -c -C ANSI -t;' ;
    exec master..xp_cmdshell @cmd;
    

    系统返回错误

    SQLState = 37000, NativeError = 137
    Error = [Microsoft][SQL Native Client][SQL Server]Must declare the scalar variable "@header".
    SQLState = 37000, NativeError = 8180
    Error = [Microsoft][SQL Native Client][SQL Server]Statement(s) could not be prepared.
    NULL
    

    @header 被声明为 XML

    让我知道谢谢和问候

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-25
      • 2019-06-30
      • 1970-01-01
      • 2014-04-10
      • 1970-01-01
      • 1970-01-01
      • 2014-04-19
      • 2012-09-17
      相关资源
      最近更新 更多