Вывод sqlcmd поврежден в Linux - PullRequest
0 голосов
/ 12 марта 2019

У меня есть запрос, который вызывает хранимую процедуру и записывает результат процедуры в файл.Сам запрос прост

Exec usp_ScriptIndexes

usp_ScriptIndexes - это хранимая процедура на сервере sql, которая печатает все сценарии создания индекса в выходном потоке с помощью команды PRINT.Он содержит только символы ASCII, и это так просто.Я запускаю sqlcmd, используя

sqlcmd -S <hostname> -U sa -P <password> -d <dbname> -b -I -i <scriptname> -o outputfile.txt

. Проблема здесь в том, что раньше она использовалась в cygwin на хосте Windows, и все работало как положено.Я установил клиент sqlcmd на машине Amazon Linux.При выполнении той же команды в Linux выдается поврежденный вывод.Это используемая версия sqlcmd

Version 17.3.0000.1 Linux

Вот так выглядит вывод

    -- Create indexes for dbo.test_cancelrefund
----------------------------------------
If IndexProperty(Object_Id('dbo.[test_cancelrefund]'), 'test_cancelrefund_PK', 'IsClustered') Is Null ^M  Alter Table mktg.[dbo].test_cancelrefund^M   A
DD CONSTRAINT test_cancelrefund_PK PRIMARY KEY  CLUSTERED ([ID])^M WITH (DATA_COMPRESSION = NONE) ^M  ON [CC_OP]^M
rsequȱ^@
If IndexProperty(Object_Id('dbo.[test_cancelrefund]'), 'cancelrefu_U_PublicID_rzxdxekghbrt', 'IsClustered') Is Null ^M  CREATE UNIQUE  NONCLUSTERED
INDEX cancelrefu_U_PublicID_rzxdxekghbrt ON dbo.[test_cancelrefund] ([PublicID], [Retired])^M WITH (DATA_COMPRESSION = NONE) ^M  ON [CC_INDEX]

Слово rsequȱ ^ @ - это то, что делает файл поврежденным.

...