使用dbatools的Invoke-DbaQuery时查询结果被截断为90字符如何解决
解决Invoke-DbaQuery输出结果90字符截断问题的方法
- 修改
Invoke-DbaQuery自带的-MaxCharLength参数,该参数默认值为90,根据你的配置字段长度设置足够大的数值即可,示例代码:
Invoke-DbaQuery -SqlInstance "你的数据库实例" -Query "SELECT 配置内容字段 FROM 配置表" -MaxCharLength 8000 | Out-File "C:\backup\app_config.txt"
- 若配置字段为
NVARCHAR(MAX)、XML等大文本类型,可将-MaxCharLength设置为[int]::MaxValue,同时添加-As DataRow参数避免类型转换截断,示例:
Invoke-DbaQuery -SqlInstance "你的数据库实例" -Query "SELECT 配置内容字段 FROM 配置表" -MaxCharLength ([int]::MaxValue) -As DataRow | Export-Csv "C:\backup\app_config.csv" -NoTypeInformation -Encoding UTF8
- 若使用
Out-File导出时仍有截断,需额外设置-Width参数,同时调整PowerShell全局枚举限制:
# 执行查询前先运行,取消枚举截断限制 $FormatEnumerationLimit = -1 # 导出时指定足够大的宽度 Invoke-DbaQuery -SqlInstance "你的数据库实例" -Query "SELECT 配置内容字段 FROM 配置表" -MaxCharLength 100000 | Out-File "C:\backup\app_config.txt" -Width 2000
测试时可先单条查询配置字段的实际长度,再设置对应的
-MaxCharLength值,避免不必要的性能损耗
内容的提问来源于stack exchange,提问作者Ken
相关产品推荐
相关产品推荐

