Aug 10, 2026, 3:24 PM

This commit is contained in:
Paweł Domański
2026-08-10 13:24:35 +00:00
parent e02460d4db
commit 5529f48942
+506 -226
View File
@@ -1,257 +1,537 @@
Dla SQL Server Standalone runbook jest prostszy niż dla FCI, ale paradoksalnie częściej kończy się problemami, bo ludzie zapominają o jobach, linked serverach, ODBC, SSIS i konfiguracji systemowej. # SQL Server Standalone Migration Runbook
## SQL Server 2016/2019 → SQL Server 2022
Poniżej jest moja produkcyjna checklista DBA do migracji: **Document Version:** 1.0
**Migration Type:** Side-by-Side Migration
**Source Server:** _________________
**Target Server:** _________________
**Migration Date:** _________________
**DBA:** _________________
SQL Server Standalone → SQL Server 2022 Standalone ---
1. Discovery / Assessment # 1. Discovery / Assessment
Serwer źródłowy
System ## 1.1 Source Server Inventory
Nazwa serwera
Windows Version ### Operating System
Patch Level
CPU - [ ] Server name documented
RAM - [ ] Windows version documented
Dyski - [ ] Windows patch level documented
Antivirus - [ ] CPU configuration documented
Firewall rules - [ ] Memory configuration documented
ODBC DSN - [ ] Disk layout documented
Scheduled Tasks - [ ] Antivirus exclusions documented
SQL Server - [ ] Firewall rules documented
- [ ] ODBC DSNs documented
- [ ] Windows Scheduled Tasks documented
### SQL Server Instance
```sql
SELECT @@VERSION; SELECT @@VERSION;
```
SQL Version - [ ] SQL Version
SQL Edition - [ ] SQL Edition
CU/SP - [ ] SQL Build Number
Collation - [ ] SQL CU/SP Level
Authentication Mode - [ ] Collation
Max Server Memory - [ ] Authentication Mode
MaxDOP - [ ] Max Server Memory
Cost Threshold - [ ] MaxDOP
Trace Flags - [ ] Cost Threshold for Parallelism
TempDB Configuration - [ ] Trace Flags
Backup Compression - [ ] Startup Parameters
IFI - [ ] TempDB Configuration
2. Inwentaryzacja baz - [ ] Backup Compression Settings
- [ ] Instant File Initialization Status
Dla każdej bazy: ---
Nazwa # 2. Database Inventory
Rozmiar
Recovery Model
Compatibility Level
Owner
TDE
CDC
Replication
Service Broker
FullText
FileStream
CLR
Query Store
3. Obiekty instancji
Security
SQL Logins
Windows Logins
Server Roles
Credentials
Certificates
Endpoints
SQL Agent
Jobs
Job Steps
Schedules
Operators
Alerts
Proxies
Integracje
Linked Servers
Linked Server Logins
Database Mail
SSIS Packages
Maintenance Plans
PowerShell Scripts
Batch Files
4. Nowy serwer
Windows
Serwer zbudowany
Join do domeny
Patchowanie
AV exclusions
Firewall
Dyski
Przykład: For each database collect:
- [ ] Database Name
- [ ] Size (Data / Log)
- [ ] Recovery Model
- [ ] Compatibility Level
- [ ] Database Owner
- [ ] AutoGrowth Settings
- [ ] TDE Enabled
- [ ] CDC Enabled
- [ ] Replication Enabled
- [ ] Service Broker
- [ ] FullText Search
- [ ] FileTables / FILESTREAM
- [ ] CLR Assemblies
- [ ] Query Store
- [ ] Database Scoped Credentials
### Database Report
```sql
SELECT
name,
compatibility_level,
recovery_model_desc,
state_desc
FROM sys.databases;
```
---
# 3. Instance Objects Inventory
## Security
- [ ] SQL Logins
- [ ] Windows Logins
- [ ] Server Roles
- [ ] Credentials
- [ ] Endpoints
- [ ] Certificates
- [ ] Server Permissions
## SQL Agent
- [ ] Jobs
- [ ] Job Steps
- [ ] Schedules
- [ ] Operators
- [ ] Alerts
- [ ] Proxies
## Integrations
- [ ] Linked Servers
- [ ] Linked Server Login Mappings
- [ ] Database Mail
- [ ] Maintenance Plans
- [ ] SSIS Packages
- [ ] PowerShell Scripts
- [ ] Batch Files
- [ ] External Interfaces
---
# 4. Target Server Preparation
## Windows Configuration
- [ ] Server built
- [ ] Joined to domain
- [ ] Latest approved patches installed
- [ ] Antivirus configured
- [ ] Firewall configured
- [ ] Monitoring agent installed
- [ ] Backup agent installed
## Storage Layout
Example:
```text
C: OS C: OS
D: SQL Binaries D: SQL Binaries
E: Data E: Data
F: Log F: Logs
G: TempDB G: TempDB
H: Backup H: Backups
```
Wolumeny utworzone ### Validation
NTFS 64K
Uprawnienia nadane
5. Instalacja SQL 2022
Instalacja
SQL Engine
Agent
FullText (jeśli używany)
Konfiguracja
Port TCP
Max Memory
MaxDOP
Cost Threshold
Backup Compression
IFI
6. Migracja obiektów instancji
Logins
Migracja z SID
Role
Permissions
Linked Servers
Linked Servers
Login Mapping
Hasła
Database Mail
Accounts
Profiles
Test mail
Agent
Jobs
Schedules
Operators
Alerts
Proxies
7. Test Restore
Dla każdej bazy: - [ ] Disk letters match design
- [ ] NTFS Allocation Unit Size = 64K
- [ ] Capacity validated
- [ ] Permissions configured
Backup ---
BACKUP DATABASE db
TO DISK='...'
WITH COMPRESSION,CHECKSUM;
Restore # 5. SQL Server 2022 Installation
## Installation
- [ ] SQL Engine installed
- [ ] SQL Agent installed
- [ ] Full Text Search installed (if required)
- [ ] Latest approved CU installed
## Initial Configuration
- [ ] TCP/IP enabled
- [ ] Static TCP Port configured
- [ ] Max Server Memory configured
- [ ] MaxDOP configured
- [ ] Cost Threshold configured
- [ ] IFI enabled
- [ ] TempDB configured
- [ ] Error Log retention configured
### Validation
```sql
SELECT @@VERSION;
```
---
# 6. Migrate Instance Objects
## Logins
- [ ] Script logins with SID
- [ ] Migrate server roles
- [ ] Migrate permissions
- [ ] Validate orphaned users
## Linked Servers
- [ ] Linked Servers migrated
- [ ] Login mappings configured
- [ ] Passwords restored
- [ ] Connectivity tested
## Database Mail
- [ ] Accounts created
- [ ] Profiles created
- [ ] Test email sent
## SQL Agent
- [ ] Jobs imported
- [ ] Schedules imported
- [ ] Operators imported
- [ ] Alerts imported
- [ ] Proxies imported
**Keep all jobs disabled until cutover.**
---
# 7. Migration Testing
## Restore Test
### Backup
```sql
BACKUP DATABASE <DatabaseName>
TO DISK = '<Path>'
WITH CHECKSUM, COMPRESSION;
```
### Verify
```sql
RESTORE VERIFYONLY RESTORE VERIFYONLY
FROM DISK = '<Path>';
```
VERIFYONLY ### Restore
Restore Test
CHECKDB
8. Tydzień przed migracją
Freeze
Brak zmian schematu
Brak nowych jobów
Brak nowych loginów
Brak nowych linked serverów
Test aplikacji
Login
Odczyt
Zapis
Raporty
ETL
9. Cutover
Start
Aplikacje stop
ETL stop
Joby stop
Final Backup
Full
BACKUP DATABASE
Log ```sql
BACKUP LOG RESTORE DATABASE <DatabaseName>
FROM DISK = '<Path>';
```
Restore ### Validation
Full
RESTORE DATABASE
WITH NORECOVERY
Logi - [ ] Restore successful
RESTORE LOG - [ ] CHECKDB successful
- [ ] Application connectivity successful
Recovery ---
WITH RECOVERY
Security # 8. T-7 Days Activities
Logins
Credentials
Linked Servers
Database Mail
Jobs
Import
Enable
10. Smoke Test
SQL
Wszystkie bazy ONLINE
Logins działają
Agent działa
Backup działa
Aplikacja
Login
Read
Write
Raport
ETL
Job Success
SSIS Success
Import działa
11. Performance Validation
Porównanie do starego serwera: ## Change Freeze
CPU - [ ] No schema changes
RAM - [ ] No new jobs
IOPS - [ ] No new linked servers
PLE - [ ] No major application releases
Wait Stats
Blocking
12. Rollback
Warunki rollback: ## User Acceptance Testing
aplikacja nie startuje - [ ] Login test
błędy logowania - [ ] Read test
utrata danych - [ ] Write test
krytyczne ETL nie działa - [ ] Reporting test
brak wydajności - [ ] ETL test
Procedura
Stop nowego środowiska
Disable Jobs
Stop Applications
Powrót
Connection Strings -> stary SQL
Enable Source Jobs
Uruchom aplikacje
Test
Login
Read
Write
13. Najczęściej zapominane rzeczy
To jest moja „killer checklist”: ---
SQL Agent Schedules # 9. Cutover Activities
SQL Agent Proxies
Linked Server Passwords
ODBC DSN
Windows Scheduled Tasks
Database Mail
TDE Certificates
Backup Jobs
Maintenance Plans
PowerShell scripts
SSIS packages
CLR Assemblies
Service Broker
Monitoring (Splunk)
Antivirus exclusions
Connection strings
Shared folders
Startup parameters
TempDB configuration
Trace flags
Local service accounts
Jeżeli migracja dotyczy typowego środowiska D&B (np. SQL 2016/2019 → SQL 2022), to ja dodatkowo zawsze dopisuję jeszcze sekcję „Post Migration 30 dni”, czyli kontrolę backupów, jobów, wzrostu baz, indeksów i ewentualne podniesienie compatibility level dopiero po zakończeniu okresu stabilizacji. ## Start Change
- [ ] Open bridge call
- [ ] Confirm stakeholders available
- [ ] Confirm rollback owner
---
## Disable Source Activity
### SQL Agent
- [ ] Disable jobs
### Applications
- [ ] Stop application services
- [ ] Stop ETL processes
- [ ] Stop integrations
---
## Final Backup
### Full Backup
```sql
BACKUP DATABASE <DatabaseName>
TO DISK='<FullBackup>';
```
### Transaction Log Backup
```sql
BACKUP LOG <DatabaseName>
TO DISK='<LogBackup>';
```
### Validation
- [ ] Backup completed
- [ ] VERIFYONLY successful
---
## Restore to SQL 2022
### Restore Full
```sql
RESTORE DATABASE <DatabaseName>
FROM DISK='<FullBackup>'
WITH NORECOVERY;
```
### Restore Logs
```sql
RESTORE LOG <DatabaseName>
FROM DISK='<LogBackup>'
WITH NORECOVERY;
```
### Recover Database
```sql
RESTORE DATABASE <DatabaseName>
WITH RECOVERY;
```
---
# 10. Post-Restore Configuration
## Security
- [ ] Logins validated
- [ ] Credentials migrated
- [ ] Linked servers validated
- [ ] Database Mail validated
## SQL Agent
- [ ] Jobs enabled
- [ ] Schedules enabled
- [ ] Operators enabled
- [ ] Alerts enabled
---
# 11. Smoke Testing
## SQL Validation
- [ ] Databases ONLINE
- [ ] SQL Agent running
- [ ] Logins functional
- [ ] Backup path accessible
- [ ] Database Mail functional
### Validation Query
```sql
SELECT
name,
state_desc
FROM sys.databases;
```
---
## Application Validation
- [ ] Login works
- [ ] Read operations work
- [ ] Write operations work
- [ ] Reports work
---
## ETL Validation
- [ ] ETL jobs complete successfully
- [ ] SSIS packages execute successfully
- [ ] Data import/export successful
---
# 12. Performance Validation
Compare against source server baseline.
## Metrics
- [ ] CPU
- [ ] Memory
- [ ] Disk Latency
- [ ] Blocking
- [ ] Wait Statistics
- [ ] TempDB Usage
- [ ] Backup Throughput
### Wait Stats
```sql
SELECT TOP (20)
wait_type,
wait_time_ms
FROM sys.dm_os_wait_stats
ORDER BY wait_time_ms DESC;
```
---
# 13. Rollback Plan
## Rollback Criteria
Rollback if:
- [ ] Application unavailable
- [ ] Data inconsistency
- [ ] Critical login failures
- [ ] ETL failures
- [ ] Severe performance degradation
---
## Rollback Steps
### Stop Target Environment
- [ ] Disable target jobs
- [ ] Stop application services
### Redirect Applications
- [ ] Revert connection strings
- [ ] Revert DNS aliases
### Enable Source
- [ ] Enable source jobs
- [ ] Start source applications
### Validate
- [ ] Login successful
- [ ] Read successful
- [ ] Write successful
---
# 14. 24-Hour Validation
- [ ] Review SQL Error Logs
- [ ] Review Windows Event Logs
- [ ] Validate Backup Success
- [ ] Validate Job Success
- [ ] Validate Monitoring Alerts
- [ ] Validate ETL Execution
---
# 15. 30-Day Stabilization
## Daily Review
- [ ] Backup Status
- [ ] Failed Jobs
- [ ] Database Growth
- [ ] Disk Consumption
- [ ] Blocking Events
- [ ] Long Running Queries
---
## Post-Stabilization Tasks
- [ ] Raise compatibility level (if planned)
- [ ] Enable Query Store tuning (if planned)
- [ ] Remove old server references
- [ ] Update CMDB
- [ ] Update documentation
- [ ] Schedule source server decommission
---
# DBA Killer Checklist
Most frequently forgotten migration items:
- [ ] SQL Agent Schedules
- [ ] SQL Agent Proxies
- [ ] Linked Server Passwords
- [ ] ODBC DSNs
- [ ] Scheduled Tasks
- [ ] Database Mail
- [ ] TDE Certificates
- [ ] Backup Jobs
- [ ] Maintenance Plans
- [ ] SSIS Packages
- [ ] CLR Assemblies
- [ ] Service Broker
- [ ] Monitoring Agents
- [ ] Antivirus Exclusions
- [ ] Shared Folders
- [ ] Connection Strings
- [ ] TempDB Configuration
- [ ] Trace Flags
- [ ] Startup Parameters
- [ ] Local Service Accounts
---
# Migration Success Criteria
Migration is successful when:
- [ ] All databases are ONLINE
- [ ] Applications connected successfully
- [ ] ETL processes completed successfully
- [ ] SQL Agent jobs functioning
- [ ] Backups functioning
- [ ] Monitoring functioning
- [ ] Performance acceptable
- [ ] Business owner sign-off received