【问题标题】:Using BCP and xp_cmdshell with T-SQL inside SSMS. "The syntax of the command is incorrect"在 SSMS 中将 BCP 和 xp_cmdshell 与 T-SQL 一起使用。 “命令的语法不正确”
【发布时间】:2016-04-06 19:52:21
【问题描述】:

所以,我正在使用 BCP 来更好地了解它,但遇到了一个我无法解决的问题。我收到一个错误,“命令的语法不正确”。

我已经测试了正确构建的完整文件路径,以及正确完成的选择查询本身。有什么想法吗?

我使用的代码是:

DECLARE @fileName varchar(128)
DECLARE @filePath varchar(128)
DECLARE @completeFilePath varchar(128)
DECLARE @sqlCmd varchar(4000)
DECLARE @BCPSwitches VARCHAR(64)
SET @filePath = 'xxxxxx'

SELECT TOP 5 [EMP]
  ,[SSNO]
  ,[NAME]
  ,[STREET]
INTO #ParticipantIdentifiers
FROM xxxxxxxxx

SET @BCPSwitches = '-w -T -t |'
SET @fileName = 'xxxxx.txt'
SET @completeFilePath = @filePath + @fileName
SET @sqlCmd = 'bcp "SELECT * FROM #ParticipantIdentifiers" queryout "'+ @completeFilePath + '" ' + @BCPSwitches 

EXEC DemoDB..xp_cmdshell @sqlCmd

【问题讨论】:

  • 你能发布在@sqlCmd 变量中生成的内容吗?
  • 如果您从 SQLCMD 或 SSMS 运行此脚本,您只需在 EXEC 之前添加“SELECT @sqlCmd”,它就会显示在结果窗口或控制台中。
  • bcp "SELECT * FROM #ParticipantIdentifiers" queryout "\NonEmployee_EEID.txt" -w -T -t |
  • 我认为终结符“|” after -t 也需要用引号引起来,因为 shell 可能会将其解释为输出管道..
  • 你是个天才我的朋友 :) 谢谢!如果您想将其发布为答案,我会标记它。

标签: sql-server tsql ssms bcp xp-cmdshell


【解决方案1】:

我认为终结符“|”在 -t 之后(在@BCPSwitches 中)也需要用引号引起来,因为 shell 可能会将其解释为输出管道。

【讨论】:

    猜你喜欢
    • 2018-01-25
    • 2020-06-09
    • 1970-01-01
    • 2021-11-06
    • 1970-01-01
    • 2013-11-02
    • 2012-06-17
    • 1970-01-01
    • 2016-01-13
    相关资源
    最近更新 更多