26 lines
999 B
Bash
Executable File
26 lines
999 B
Bash
Executable File
#!/bin/bash
|
|
|
|
# Wait 60 seconds for SQL Server to start up by ensuring that
|
|
# calling SQLCMD does not return an error code, which will ensure that sqlcmd is accessible
|
|
# and that system and user databases return "0" which means all databases are in an "online" state
|
|
# https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-databases-transact-sql?view=sql-server-2017
|
|
|
|
DBSTATUS=1
|
|
ERRCODE=1
|
|
i=0
|
|
|
|
while [[ $DBSTATUS -ne 0 ]] && [[ $i -lt 60 ]] && [[ $ERRCODE -ne 0 ]]; do
|
|
i=$i+1
|
|
DBSTATUS=$(/opt/mssql-tools/bin/sqlcmd -h -1 -t 1 -U sa -P $MYSQL_SA_PASSWORD -Q "SET NOCOUNT ON; Select SUM(state) from sys.databases")
|
|
ERRCODE=$?
|
|
sleep 1
|
|
done
|
|
|
|
if [ $DBSTATUS -ne 0 ] OR [ $ERRCODE -ne 0 ]; then
|
|
echo "SQL Server took more than 60 seconds to start up or one or more databases are not in an ONLINE state"
|
|
exit 1
|
|
fi
|
|
|
|
# Run the setup script to create the DB and the schema in the DB
|
|
/opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P $MYSQL_SA_PASSWORD -d master -i setup.sql
|