Я пытаюсь отправить данные таблицы в файл 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 содержит несколько операторов select
, и я заметил, что когда я открываю выходной файл в Notepad++, любой столбец, определенный как varchar(max)
, усекается. Я исправил большинство из них, определив максимальную длину этих столбцов и приведя их к varchar(nnnn)
, где размер столбца был максимальной длиной. Моя проблема в том, что у меня есть столбец XML
, который не будет работать с этим обходным путем. Код, который я использую ниже, усекается до 517 байт.
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 (который может иметь размер от 2 до 605 КБ и в настоящее время усекается до 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)
должно содержать 2 г данных.
Когда я SELECT JOBP FROM dbo.JOBP_MigrationXML
, я могу скопировать и вставить все содержимое одного столбца в Notepad++ без усечения.
Как я могу заставить свой скрипт включать тот же контент в мой выходной файл? Есть ли настройка в sqlcmd, которая вызывает это? Я в тупике.
NVARCHAR(MAX)
и посмотрите изменения. Какую версию SQL Server вы используете? - вывод заканчивается наText2=
- какие данные в этом поле? добавьте псевдоним к вашему выбору. - изменить всю эту информацию в вашем вопросе. - person Marco Aurelio Fernandez Reyes   schedule 21.02.2020NVARCHAR(MAX)
усекает данные до 237 байт. Я пробовал оба способа. Я не понимаю, что дает добавление псевдонима к моему оператору select. Я использую только одну таблицу.Text2=
является частью данных в столбцеJOBP
, который усекается. - person VLo88   schedule 24.02.2020