Одна из наших таблиц имеет очень-очень длинные записи в определенном столбце. Эти запросы используются нечасто, но необходимы.
Я использую утилиту sqlcmd в bash так:
-- getfile.sql
SET NOCOUNT ON;
-- Disable message for next USE command
:setvar SQLCMDERRORLEVEL 1
USE myDb;
SELECT myField
FROM myTable
GO
-- Reenable
:setvar SQLCMDERRORLEVEL 0
# getfile.sh
sqlcmd \
-S $server \
-U $username \
-P $password \
-y 0 \
-I getfile.sql > filename.txt
-y 0
это трюк, который позволяет мне получить текст без его усечения.
Итак, теперь мне нужно преобразовать это в PowerShell.
Invoke-Sqlcmd `
-ServerInstance $server `
-Username $username `
-Password $password `
-InputFile 'get_clientfile.sql' `
-Variable $StringArray `
| Out-File 'filename.txt'
Но, к сожалению, мой вывод ограничен:
myField
-----------------
BEGIN…
Я также пытался использовать MaxCharLength
и MaxBinaryLength
безрезультатно.
До сих пор я не нашел способ предотвратить усечение вывода.
Также обратите внимание, что он не соблюдает мои команды sqlcmd, такие как :setvar
. Одним из способов обойти это, то, что -y
действительно делает (я думаю), может быть установка SQLCMDMAXVARTYPEWIDTH
на 0. Но я не могу найти способ установить такие переменные при использовании Invoke-SqlCmd
.
Любая помощь высоко ценится!
| Format-Table -Wrap -HideTableHeaders
. Спасибо! - person Frankie   schedule 14.03.2020