我们的一张表在特定列中有非常长的记录。这些查询很少使用,但是是必要的。
我一直在 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…
我也尝试过使用MaxCharLength
,MaxBinaryLength
但无济于事。
到目前为止,我还没有找到防止它截断输出的方法。
另请注意,它不尊重我的 sqlcmd 命令,例如:setvar
. 解决这个问题的一种方法,-y
真正做的(我认为)可能是将 设置SQLCMDMAXVARTYPEWIDTH
为 0。但我找不到在使用Invoke-SqlCmd
.
非常感谢任何帮助!