Instalacja
Biblioteki:
- Microsoft Visual C++ Redistributable Version: https://aka.ms/vs/17/release/vc_redist.x64.exe https://aka.ms/vs/17/release/vc_redist.x86.exe
- Microsoft OLE DB Driver for SQL Server: https://go.microsoft.com/fwlink/?linkid=2278038 https://go.microsoft.com/fwlink/?linkid=2278037
Microsoft SQL Server
Pobieramy wersję Express: https://www.microsoft.com/pl-pl/sql-server/sql-server-downloads
Podczas instalacji będziemy pytani o różne opcje.

Wybieramy Custom.

Wybieramy New SQL Server…

Oznaczamy Azure…

Wpisujemy nazwę instancji. Instancji możemy mieć wiele – w późniejszym czasie możemy je dodawać.

Zaznaczamy uwierzytelnianie mieszane oraz wpisujemy hasło dla użytkownika administracyjnego sa.
Microsoft SQL Server Management Studio
Zalecam instalację tego narzędzia na każdym serwerze: https://aka.ms/ssmsfullsetup
Konfiguracja
Serwera
Włączamy protokół TCP/IP dla połączeń z sieci. Uruchamiamy Sql Server Configuration Manager i klikamy dwukrotnie na protokół TCP/IP:

Ustawiamy jak na poniższym zdjęciu:

Przechodzimy do IP Addresses:

Przy adresach IP ustawiamy Active: Yes, Enabled: Yes. Na samym końcu ustawiamy adres TCP Port: 1433. Zatwierdzamy i restartujemy SQL Server:

Klikamy dwukrotnie na SQL Server Browser:

Upewniamy się, że Start Mode jest ustawione na: Automatic

Jeśli SQL Server Browser nie jest uruchomiony to uruchamiamy go:

Zapora systemu Windows
Odblokowujemy porty w firewallu Windowsa dodając dwie reguły (Powershell z uprawnieniami administratora):
New-NetFirewallRule -DisplayName "MSSQL" -Direction inbound -Profile Any -Action Allow -LocalPort 1433 -Protocol TCP -EdgeTraversalPolicy Allow
New-NetFirewallRule -DisplayName "MSSQL Browser" -Direction inbound -Profile Any -Action Allow -LocalPort 1434 -Protocol UDP -EdgeTraversalPolicy Allow
Skrypty
Wykonanie skryptu z poziomu cmd:
osql -E -Q "SQL Query"
Kopia zapasowa
BACKUP DATABASE dbname TO DISK='C:\backup\dbname.bak';
Katalog docelowy powinien mieć uprawnienia umożliwiające zapis dla usługi SQL Server. Aby nadać należy wpisać użytkownika: NT Service\MSSQL$SQLEXPRESS

oraz sprawdzić nazwę:

Sprawdzenie czy ktoś jest zalogowany
Służą do tego zapytania:
EXEC sp_who;
lub:
EXEC sp_who2;
lub bardziej nadający się do przefiltrowania:
SELECT spid,
sp.[status],
loginame [Login],
hostname,
blocked BlkBy,
sd.name DBName,
cmd Command,
cpu CPUTime,
physical_io DiskIO,
last_batch LastBatch,
[program_name] ProgramName
FROM master.dbo.sysprocesses sp
JOIN master.dbo.sysdatabases sd ON sp.dbid = sd.dbid
WHERE sp.hostname <> ''
ORDER BY spid
Optymalizacja bazy danych
Wykorzystanie pamięci
Całkowita oraz wolna pamięć serwera:
SELECT
(total_physical_memory_kb/1024) AS Total_OS_Memory_MB,
(available_physical_memory_kb/1024) AS Available_OS_Memory_MB
FROM sys.dm_os_sys_memory;

Wykorzystanie pamięci przez SQL Server:
SELECT
(physical_memory_in_use_kb/1024) AS Memory_used_by_Sqlserver_MB,
(locked_page_allocations_kb/1024) AS Locked_pages_used_by_Sqlserver_MB,
(total_virtual_address_space_kb/1024) AS Total_VAS_in_MB,
process_physical_memory_low,
process_virtual_memory_low
FROM sys.dm_os_process_memory;

SELECT
sqlserver_start_time,
(committed_kb/1024) AS Total_Server_Memory_MB,
(committed_target_kb/1024) AS Target_Server_Memory_MB
FROM sys.dm_os_sys_info;

Znane problemy
Problem z zalogowaniem się użytkownika SQL
Należy sprawdzić czy jest włączone uwierzytelnianie mieszane (za pomocą Microsoft SQL Server Managment Studio) klikając PPM na serwer i wybierając Właściwości:

Zmiana i zatwierdzenie wymaga restartu usługi SQL Server.
Długie łączenie się do serwera
Należy sprawdzić czy porty 1433 TCP i 1434 UDP są odblokowane w firewallu oraz spróbować połączyć się za pomocą nazwy serwera. Jeśli po nazwie nie znajduje serwera to należy go sobie wpisać na stałe do pliku %SystemRoot%\system32\drivers\etc\hosts na komputerze klienta i dopisać do niego np:
1.2.3.4 nazwaSerweraMssql