データベースが起動する前に、mssqlデータベースでいくつかのSQL文を実行したいと思います(これはdocker RUNステップの一部として発生します)。私が知っている限り、これを行う唯一の方法は、バックグラウンドでサーバーを起動して起動するのを待ってから、sqlファイルを実行してサーバーをシャットダウンすることです。
に基づいてこの問題私は次のようにうまくいきます:
/opt/mssql/bin/sqlservr & sleep 10 && /opt/mssql-tools/bin/sqlcmd -i whatever.sql && pkill sqlservr
問題は、sleep 10
サーバーがゆっくり起動すると少し不安定で、早く起動すると待ち時間が追加されるという点だ。sleep 10
セクションをコマンドの標準出力を監視/opt/mssql/bin/sqlservr
し、特定のログ行が一致するまでブロックするように置き換える方法はありますか?
答え1
私はこのソリューションが以下に基づいて動作すると思います。このスーパーユーザーの答え:
( /opt/mssql/bin/sqlservr & ) | grep -q "Service Broker manager has started" && /opt/mssql-tools/bin/sqlcmd -i whatever.sql && pkill sqlservr