#!/bin/bash # Setup script for test SQL Server environment set -e echo "==========================================" echo "SQL Server Test Environment Setup" echo "==========================================" echo "" # Check if Docker is installed if ! command -v docker &> /dev/null; then echo "Error: Docker is not installed" echo "Please install Docker first: https://docs.docker.com/get-docker/" exit 1 fi # Check if Docker Compose is available (either standalone or plugin) if ! command -v docker-compose &> /dev/null && ! docker compose version &> /dev/null; then echo "Error: Docker Compose is not installed" echo "Please install Docker Compose first" exit 1 fi # Determine which compose command to use if docker compose version &> /dev/null; then COMPOSE_CMD="docker compose" else COMPOSE_CMD="docker-compose" fi echo "Step 1: Starting SQL Server containers..." $COMPOSE_CMD -f docker-compose.test.yml up -d echo "" echo "Step 2: Waiting for SQL Server to be ready..." echo "This may take 30-60 seconds..." # Set default password if not provided SA_PASSWORD=${SA_PASSWORD:-YourStrong!Passw0rd} # Wait for baseline server echo -n "Waiting for baseline server" for i in {1..30}; do if docker exec drt-sqlserver-baseline /opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P "$SA_PASSWORD" -C -Q "SELECT 1" &> /dev/null; then echo " ✓" break fi echo -n "." sleep 2 done # Wait for target server echo -n "Waiting for target server" for i in {1..30}; do if docker exec drt-sqlserver-target /opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P "$SA_PASSWORD" -C -Q "SELECT 1" &> /dev/null; then echo " ✓" break fi echo -n "." sleep 2 done echo "" echo "Step 3: Initializing baseline database..." docker exec -i drt-sqlserver-baseline /opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P "$SA_PASSWORD" -C < test_data/init_baseline.sql echo "" echo "Step 4: Initializing target database..." docker exec -i drt-sqlserver-target /opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P "$SA_PASSWORD" -C < test_data/init_target.sql echo "" echo "==========================================" echo "Setup completed successfully!" echo "==========================================" echo "" echo "SQL Server instances are running:" echo " Baseline: localhost:1433" echo " Target: localhost:1434" echo "" echo "Credentials:" echo " Username: sa" echo " Password: (set via SA_PASSWORD environment variable)" echo "" echo "Test databases:" echo " Baseline: TestDB_Baseline" echo " Target: TestDB_Target" echo "" echo "To test the connection:" echo " drt discover --server localhost --database TestDB_Baseline --output config_test.yaml" echo "" echo "To stop the servers:" echo " $COMPOSE_CMD -f docker-compose.test.yml down" echo "" echo "To stop and remove all data:" echo " $COMPOSE_CMD -f docker-compose.test.yml down -v" echo ""