# SQL Server für Linux im Docker Container
# Ersteller: Dr. Holger Schwichtenberg
# Weitere Informationen: https://docs.microsoft.com/de-de/sql/linux/quickstart-install-connect-docker

# Aufräumen: Alle SQL-Container löschen
docker ps -a 
docker stop $(docker ps -a -q -f name=SQL*)
docker rm $(docker ps -a -q -f name=SQL*)
docker ps -a -q -f name=SQL*

# oder
docker ps
docker stop SQL1
docker rm SQL1

# Download und Start (Zeitmessung)
docker ps
Measure-Command {
docker pull microsoft/mssql-server-linux
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=geheim+123" -e "MSSQL_PID=Developer" -p 1434:1433 --name SQL1 --restart always -d microsoft/mssql-server-linux
}

# SQL Server als LCOW
docker pull microsoft/mssql-server-linux --platform=linux
docker run --platform=linux -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=geheim+123" -e "MSSQL_PID=Developer" -p 1435:1433 --name SQL4  -d microsoft/mssql-server-linux
docker ps

# Kontrolle
docker images -a
docker ps -a

# Interaktive Bedienung von sqlcmd im Container
docker exec -it SQL1 "bash"
docker exec -it SQL1 /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'geheim+123'
# Dann interaktiv:
create database ITVisionsCRM
GO
CREATE TABLE Kunden (ID INT, Kundenname NVARCHAR(50), Datum DATETIME2)
GO
INSERT INTO Kunden VALUES (1, 'www.IT-Visions.de', '1/1/1996')
select * from Kunden
GO

# SQL-Skript kopieren und ausführen im Container
docker cp H:\TFS\Demos\PowerShell\3_Einsatzgebiete\Docker\sql\CreateDB.sql SQL1:/tmp/CreateDB.sql
docker exec -it SQL1 /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'geheim+123' -i /tmp/CreateDB.sql
docker cp H:\TFS\Demos\PowerShell\3_Einsatzgebiete\Docker\sql\CreateData.sql SQL1:/tmp/CreateData.sql
docker exec -it SQL1 /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'geheim+123' -i /tmp/CreateData.sql

# Volumne nutzen
docker volume create xvol
docker volume ls
docker volume inspect xvol
docker run -v xvol:/xvol php-fastcgi:latest

# Mounting /xtemp --> c:/temp/xtemp
cd c:\temp
mkdir xtemp
copy $:\TFS\Demos\PowerShell\3_Einsatzgebiete\Docker\sql\*.sql C:\temp\xtemp
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=demo+123" -e "MSSQL_PID=Developer" --name sql2 -p 14345:1433 -v c:/temp/xtemp:/xtemp -d microsoft/mssql-server-linux:2017-latest
docker exec -it sql2 /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'geheim+123' -i /xtemp/CreateDB.sql

# Restart
docker restart SQL1
docker restart sql2

#SELECT @@SERVERNAME,
#    SERVERPROPERTY('ComputerNamePhysicalNetBIOS'),
#    SERVERPROPERTY('MachineName'),
#    SERVERPROPERTY('ServerName')

# Aufräumen aller Container
Get-Container  | Stop-Container
Get-Container | Remove-Container -force

# SQL Server Image löschen
docker image rm microsoft/mssql-server-linux:2017-latest