我有一个查询,该查询调用存储过程并将该过程的输出写入文件。查询本身很简单
Exec usp_ScriptIndexes
usp_ScriptIndexes是sql服务器中的存储过程,它使用PRINT命令将所有索引创建脚本打印到输出流。它仅包含ASCII字符,非常简单。我使用
执行sqlcmdsqlcmd -S <hostname> -U sa -P <password> -d <dbname> -b -I -i <scriptname> -o outputfile.txt
这里的问题是早先在Windows主机中的cygwin中使用的,并且一切都按预期工作。我在Amazon Linux机器中安装了sqlcmd客户端。在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ȱ^ @一词使文件损坏。