1

我们的一张表在特定列中有非常长的记录。这些查询很少使用,但是是必要的。

我一直在 bash 中使用 sqlcmd 实用程序,如下所示:

-- 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…

我也尝试过使用MaxCharLengthMaxBinaryLength但无济于事。

到目前为止,我还没有找到防止它截断输出的方法。

另请注意,它不尊重我的 sqlcmd 命令,例如:setvar. 解决这个问题的一种方法,-y真正做的(我认为)可能是将 设置SQLCMDMAXVARTYPEWIDTH为 0。但我找不到在使用Invoke-SqlCmd.

非常感谢任何帮助!

4

0 回答 0