Linux版SQL Server Docker中SQLCMD执行建库命令失败如何解决?
问题原因
你的报错由Shell参数拆分逻辑导致:
- 定义
query变量时额外嵌套了一层单引号 - 调用
sqlcmd时没有给$query变量加双引号包裹
Shell执行命令时会按空格将create database $ModuleName拆分为多个独立参数,-Q参数仅接收到了'create,后续的database被sqlcmd识别为未知参数,触发报错。
修正方案
直接调整command.sh的写法即可,无需调用.sql文件,完全支持动态环境变量生成查询:
#!/bin/bash echo 'creating database from ->' $ModuleName # 直接定义查询语句,不需要额外嵌套内层单引号 query="create database $ModuleName" echo $query # 调用时给$query加双引号,保证整个查询作为单个参数传入sqlcmd /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "my_strong_password" -Q "$query"
额外说明
如果后续查询涉及字符串类型的变量值,需要在查询语句里加单引号的,直接写在双引号包裹的query定义里即可,参考示例:
# 带字符串条件的查询示例 query="select * from users where username = '$UserName'" /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "my_strong_password" -Q "$query"
内容的提问来源于stack exchange,提问作者Hossein Fallah
相关产品推荐
相关产品推荐

