У меня есть запрос, который вызывает хранимую процедуру и записывает результат процедуры в файл.Сам запрос прост
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ȱ ^ @ - это то, что делает файл поврежденным.