我正在尝试将表数据发送到本地目录 xml 文件。我创建了一个运行 sql 脚本文件并使用以下命令将数据发送到输出文件的 SQL 代理作业:
sqlcmd -d Migration -E -h-1 -W -i "\\phpdxtdavis\F$\Automic\Migration Source - Final\AutomicXML_Extract.sql" -o "F:\Automic\2020 XML Files\Automic_MigrationXML.xml"
AutomicXML_Extract.sql文件有几个语句,我注意到当我在 Notepad++ 中打开输出文件时,定义为的任何列都被截断。我通过确定这些列的最大长度并将它们转换为列大小为最大长度的位置来纠正其中的大部分问题。我的问题是我的专栏不适用于该解决方法。我在下面使用的代码被截断为 517 字节。select
varchar(max)
varchar(nnnn)
XML
CREATE TABLE [dbo].[JOBP_MigrationXML](
[Open_Job_P] [varchar](256) NULL,
[JOBP] [xml] NULL,
[SCRIPTS] [nvarchar](max) NULL,
[DOCU_Link] [varchar](max) NULL,
[Close_Job] [varchar](8) NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
SELECT Open_Job_P, CAST(CONVERT(XML, JOBP) as XML), CAST(SCRIPTS AS varchar(3000)), CAST(DOCU_Link AS varchar(3000)), Close_Job
FROM dbo.JOBP_MigrationXML WHERE SprintName = 'Extracts';
这是 JOBP 列的输出(其大小可以从 2k 字节到 605k 字节不等,当前被截断为 517 字节):
<JOBP state="1"><JobpStruct mode="design"><task Alias="" BranchType="0" Col="1" Lnr="1" OType="<START>" Object="START" ParentAlias="" ParentObject="" Row="1" Text2=""><checkpoint RollbackFlag="0" RunPerPatch="0" RunPerTarget="0" TcpADays="0" TcpATimee="CALE.CALENDAR_MASTER" id=""/></calendars><postconditions><PostCon><conditions id="CONDITIONS"/></PostCon></postconditions></task><task Alias="" BranchType="0" Col="3" Lnr="7" OType="<END>" Object="END" ParentAlias="" ParentObject="" Row="1" Text2=
我已经尝试了所有JOBP
列,包括convert(varchar(max), JOBP)
,CAST(convert(varchar(max), JOBP) AS varchar(max))
但截断为 257 个字符。我搜索过的所有内容都varchar(max)
应该包含 2g 的数据。
当我SELECT JOBP FROM dbo.JOBP_MigrationXML
可以将一列的全部内容复制并粘贴到 Notepad++ 中时,不会被截断。
如何让我的脚本将相同的内容包含到我的输出文件中?sqlcmd 中是否有导致此问题的设置?我对此束手无策。