2

全体として、この投稿xp_cmdshell Query Length Too Largeで、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 ファイルを読み取ってから再コード化できます。「奇妙な文字」を本来あるべき状態、つまり空の文字列に変換する最良の方法は何ですか?

御時間ありがとうございます。

4

2 に答える 2

1

これは設計によるもので、bcpnull と空の文字列の両方を同じ出力 (空の文字列としましょう) に変換した場合、後でそれらを明確にする方法はありません。

于 2012-06-12T15:34:18.617 に答える