5
對於下面的代碼Invoke-SqlCmd不返回長字符串?
$sql = "select ..... for xml path('row')" # returns a long xml file
$x = Invoke-SqlCmd -Server xxxx $sql
$r = $x[0].ItemArray[0]
返回$r
有一截XML字符串。如何確保返回完整的長字符串?
對於下面的代碼Invoke-SqlCmd不返回長字符串?
$sql = "select ..... for xml path('row')" # returns a long xml file
$x = Invoke-SqlCmd -Server xxxx $sql
$r = $x[0].ItemArray[0]
返回$r
有一截XML字符串。如何確保返回完整的長字符串?
該cmdlet具有默認的最大字符長度,默認爲4,000個字符[1]用於XML或char數據類型。
嘗試以下操作:
$x = Invoke-SqlCmd -Server xxxx $sql -MaxCharLength <some large enough number>
[1] http://blogs.technet.com/b/heyscriptingguy/archive/2013/05/06/10-tips-for-the-sql-server-powershell-scripter.aspx - 搜索-MaxCharLength
其實我發現,結果被分成多行。 – ca9163d9 2015-02-06 21:35:54
@ dc7a9163d9我發現這一點從我做過的一些快速測試中來看也是如此。但是,重建你的xml文檔應該很簡單。只需再次將矮胖混合在一起。 ;)也就是說,我發現如果你發現你的查詢返回的單個char數據列的數據元素數超過4000個(二進制爲1024;使用'-MaxBinaryLength'),那麼你將需要上面的命令確保你得到整個文件。 – 2015-02-07 00:54:38
儘管我的測試只是用二進制數據,我已經在某個數據庫中。我沒有對xml或其他char數據做任何測試。我不知道PowerShell如何將它們組裝起來。對我來說,它看起來像是按字節切碎它們。也許對於一個XML文檔,它每行都有。將不得不測試它。 – 2015-02-07 01:02:43