Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 运行多个sqlcmd时,sqlcmd不会关闭bash脚本中的连接_Sql Server_Batch File_Sqlcmd - Fatal编程技术网

Sql server 运行多个sqlcmd时,sqlcmd不会关闭bash脚本中的连接

Sql server 运行多个sqlcmd时,sqlcmd不会关闭bash脚本中的连接,sql-server,batch-file,sqlcmd,Sql Server,Batch File,Sqlcmd,在运行以下查询时,我能够得到第一个查询结果,但它不会继续到第二个查询。连接完成后似乎不会停止 我能够使用.sql文件中的查询运行类似的查询,并逐个运行它们。我在运行所有7合1 bash脚本时遇到了一个问题 QUERY1 = SELECT * FROM SOMETABLE QUERY2 = SELECT * FROM SOMETABLE QUERY3 = SELECT * FROM SOMETABLE QUERY4 = SELECT * FROM SOMETABLE QUERY5 = SELECT

在运行以下查询时,我能够得到第一个查询结果,但它不会继续到第二个查询。连接完成后似乎不会停止

我能够使用.sql文件中的查询运行类似的查询,并逐个运行它们。我在运行所有7合1 bash脚本时遇到了一个问题

QUERY1 = SELECT * FROM SOMETABLE
QUERY2 = SELECT * FROM SOMETABLE
QUERY3 = SELECT * FROM SOMETABLE
QUERY4 = SELECT * FROM SOMETABLE
QUERY5 = SELECT * FROM SOMETABLE
QUERY6 = SELECT * FROM SOMETABLE
QUERY7 = SELECT * FROM SOMETABLE

sqlcmd -S $HOST -U $USER -P $PASSWORD -d $DATABASENAME -s $QUERY1 > 
QueryRun1.csv
sqlcmd -S $HOST -U $USER -P $PASSWORD -d $DATABASENAME -s $QUERY2 > QueryRun2.csv
sqlcmd -S $HOST -U $USER -P $PASSWORD -d $DATABASENAME -s $QUERY3 > QueryRun3.csv
sqlcmd -S $HOST -U $USER -P $PASSWORD -d $DATABASENAME -s $QUERY4 > QueryRun4.csv
sqlcmd -S $HOST -U $USER -P $PASSWORD -d $DATABASENAME -s $QUERY5 > QueryRun5.csv
sqlcmd -S $HOST -U $USER -P $PASSWORD -d $DATABASENAME -s $QUERY6 > QueryRun6.csv
sqlcmd -S $HOST -U $USER -P $PASSWORD -d $DATABASENAME -s $QUERY7 > QueryRun7.csv

这个bash脚本不获取第二个查询结果,因此。

我不记得为什么,我刚才写了这个,但我记得在使用sqlcmd时遇到了问题。我在以下语法方面运气更好:

output=$(/opt/mssql-tools/bin/sqlcmd -U $Login -P $Password -i "$file")
echo "$output" > $log
在您的情况下,这将意味着如下内容:

QUERY1="SELECT * FROM SOMETABLE"
QUERY2="SELECT * FROM SOMETABLE"
QUERY3="SELECT * FROM SOMETABLE"
QUERY4="SELECT * FROM SOMETABLE"
QUERY5="SELECT * FROM SOMETABLE"
QUERY6="SELECT * FROM SOMETABLE"
QUERY7="SELECT * FROM SOMETABLE"

output=$(sqlcmd -S $HOST -U $USER -P $PASSWORD -d $DATABASENAME -Q "$QUERY1")
echo "$output" > QueryRun1.csv
output=$(sqlcmd -S $HOST -U $USER -P $PASSWORD -d $DATABASENAME -Q "$QUERY2")
echo "$output" > QueryRun2.csv
output=$(sqlcmd -S $HOST -U $USER -P $PASSWORD -d $DATABASENAME -Q "$QUERY3")
echo "$output" > QueryRun3.csv
output=$(sqlcmd -S $HOST -U $USER -P $PASSWORD -d $DATABASENAME -Q "$QUERY4")
echo "$output" > QueryRun4.csv
output=$(sqlcmd -S $HOST -U $USER -P $PASSWORD -d $DATABASENAME -Q "$QUERY5")
echo "$output" > QueryRun5.csv
output=$(sqlcmd -S $HOST -U $USER -P $PASSWORD -d $DATABASENAME -Q "$QUERY6")
echo "$output" > QueryRun6.csv
output=$(sqlcmd -S $HOST -U $USER -P $PASSWORD -d $DATABASENAME -Q "$QUERY7")
echo "$output" > QueryRun7.csv

-s参数是列分隔符。也许您想为查询指定-Q,它应该用引号括起来。还指定-I以确保使用带引号的标识符。这确实有帮助,但我可能需要研究如何完善我的查询。它会给我一些错误,例如“SELECT*fromsometable”附近的语法不正确。我可以在SSMS上运行此查询,但不能在SQLCMD hmmm上运行。然后问题是您的查询@WeiJun。您过度简化了问题,并暗示问题是其他问题。问题是您的语句,而不是bash或sqlcmd。好的,我设法得到了查询。这种方法有效。非常感谢你。