我试图从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#中做同样的事情并没有改变。
发布于 2014-08-19 20:51:39
我怀疑问题是定界符。序列-t\"\0\"在引号之间转换为空字符。您可以尝试将\0替换为另一个标记器,如,或;。如果您确实希望空字符作为分隔符,则应该在字符串中插入-t\\0。
https://stackoverflow.com/questions/25391951
复制相似问题