总之,在这篇文章中,xp_cmdshell 查询长度太大,我设法解决了我在使用 xp_cmdshell 时遇到的查询大小限制问题。我写这么长的查询的原因是为了试图解决另一个问题,即 bcp 似乎将空字符串(来自包含空字符串字段的表)转换为一些编码字符('NUL' 或 'r',或者其他的东西)。这影响了我可以使用导出的数据的用途。我的出口查询是
string strBcp = String.Format(
"declare @sql varchar(8000) " +
"select @sql = 'bcp \"SELECT * FROM [{0}]..[ivwTmpDrgDataView];\" ' +" +
"'queryout \"{1}\\DRGData.txt\" -c -t -T -S ' + @@servername " +
"exec master..xp_cmdshell @sql;",
strDatabase,
strDataDir);
这工作正常,但在导出的文件数据库值被转换
NULL -> Empty String (Which is fine!)
Empty String -> Some strange character
我可以用 C# 读取 .txt 文件,然后重新编码 -将我的“奇怪字符”转换回它应该是什么,一个空字符串的最佳方法是什么?
谢谢你的时间。