DEV Community

Cover image for Try to solve Invoke-SqlCmd reduced output

Try to solve Invoke-SqlCmd reduced output

antoinega profile image Antoine ・1 min read

Photo by Andres Siimon on Unsplash

We use Invoke-SqlCmd to execute short sql scripts modified in git repository.

But once we have tried to select a large JSON column, and get the result truncated.

The popular answer is to add the following option

 -MaxCharLength 65534

but it did not work for us.

I find a workaround using Export-Csv.
If you are using Powershell 7, you can use -UseQuotes Never .

$files= git diff --name-status HEAD^ HEAD


if($line.Change -ne "D")
Write-Host $line.Path
$outputfile= $line.Path.Split('/')[1] -replace  ".sql", ".txt"
Write-Host "$(Build.ArtifactStagingDirectory)/$($outputfile)"
$result = Invoke-Sqlcmd -ServerInstance "$env:Server" -Database "$env:Db" -Username "$env:UserLogin" -Password "$env:UserPassword" -InputFile $line.Path 
$result | Export-Csv "$(Build.ArtifactStagingDirectory)/$($outputfile)"  -NoTypeInformation  -Delimiter "," -UseQuotes Never

Sadly, the ouptut type was NVARCHAR(MAX), so it's still truncated.

Hope this help !


Editor guide