环境: Solaris 10,使用 sqsh 和 freetds 与 MS SQL Server 对话的 /bin/sh 脚本
(TLDR) 问题: 我需要 sqsh 忽略美元符号并将其传递给 MS SQL。
背景: 我正在编写一些动态构建 SQL 以更改现有索引的代码,但是当它运行时,出现错误:
Msg 2727, Level 11, State 1
Server 'HOST\SERVER', Line 1
Cannot find index 'foo'.
我四处寻找,发现没有 index namedfoo
但有一个named foo$bar
。
构建的输入 SQL 输入看起来不错...
% grep 'foo' input.sql
alter index [foo$bar] on ...
...并通过新查询会话或第三方应用程序成功运行此 SQL。但是,通过 sqsh 时的结果看不到那个美元符号:
% sqsh -e -i input.sql -o output.sql
% grep 'foo' output.sql
1> alter index [foo] on ...
...这表明它被解释$bar
为变量或其他东西。
任何人都知道如何让 sqsh 逃脱美元符号或允许一个通过?我尝试了各种引号和反斜杠的组合。
帮帮我,stackoverlow。你是我唯一的希望。