【发布时间】:2014-08-19 19:56:03
【问题描述】:
我正在尝试从 c# 调用 BCP 命令。我正在 c# 代码中构建命令,但出现错误。这是我正在构建的 BCP 命令:
string.Format("bcp \"EXEC {0} {1}\" queryout \"{2}\" -c -t\"\0\" -S {3} -U {4} -P {5}", spName, filterList, path, server, user, password);
格式化后的命令如下:
"bcp \"EXEC StatisticsByType @Date='1/1/2013'\" queryout \"\\\\Server\\Folder\\MagicWords.txt\" -c -t\"\0\" -S server.com -U userName -P password"
我得到的错误是:
{"Incorrect syntax near 'queryout'.\r\n'.' is an invalid name because it contains a NULL character or an invalid unicode character."}
我假设它与 .Net 如何转义“”有关。有谁知道传递这些引号的正确方法,或者这是否是问题所在?
编辑:我从 powershell ISE 运行了有问题的 BCP 命令。它引发了“无法打开 BCP 主机数据文件”错误。所以我将 queryout 服务器名称更改为它的映射网络驱动器名称,它工作正常。然而,在 C# 中做同样的事情并没有产生任何变化。
【问题讨论】:
-
您的查询字符串或文件路径中是否有 CRLF?在我看来,您可能有一个嵌入式 CRLF,并且可能有一个特殊字符显示为“。”
-
我想我不会。这一切都写在 Visual Studio 中的一行上。我现在正在寻找是否可以验证这一点。