Preskočiť na obsah
Návod

Migrácia databázy na nový server – checklist

Kontrolný zoznam presunu databázy na nový SQL Server: inventár pred migráciou (loginy so SID, joby, linked servery, certifikáty / TDE, konfigurácia), výber metódy, cutover krok za krokom a kontroly po migrácii.

4 min čítania 6 krokov SQL Server 2016+
Migrácia zlyháva skoro vždy na veciach **mimo databázy**: loginy, joby, linked servery, certifikáty, Database Mail, nastavenia servera. Databázu samotnú prenesieš zálohou; zvyšok si musíš spísať.

> [!WARNING]
> Detach / attach ako hlavnú metódu neodporúčame – databáza je počas kopírovania nedostupná, nemáš záložný bod a pri chybe na ceste prídeš o originál. Backup / restore + log backupy dajú krátky výpadok a cestu späť.

## 1. Inventár na starom serveri (týždeň pred)

| Čo | Recept / nástroj |
|---|---|
| Edícia, build, CU, max memory, MAXDOP, collation | [Identita a konfigurácia inštancie](script.php?id=11&s=identita-a-konfiguracia-instancie) |
| Recovery model, compat level, RCSI, page verify, vlastník | [Inventár databáz](script.php?id=12&s=inventar-databaz-recovery-model-compat-level-rcsi) |
| Loginy **so SID a hashom hesla**, serverové role | [Kópia loginov (dbatools)](script.php?id=9&s=kopia-loginov-medzi-servermi-dbatools), [Loginy a serverové role](script.php?id=35&s=loginy-a-serverove-role) |
| SQL Agent joby, harmonogramy, operátori, vlastníci | [SQL Agent joby – harmonogram](script.php?id=55&s=sql-agent-joby-harmonogram-vlastnik-notifikacie) |
| Linked servery a mapovanie loginov | [Linked servery – inventár](script.php?id=56&s=linked-servery-inventar) |
| Certifikáty, TDE, zálohy kľúčov | [Certifikáty a TDE](script.php?id=54&s=certifikaty-a-tde-expiracia-a-zalohy-klucov) |
| Credentials, proxy, Database Mail profily, trace flagy (`DBCC TRACESTATUS(-1)`) | ručne / dbatools |
| Kto sa pripája (aplikácie, connection stringy, DNS alias) | [sp_WhoIsActive](script.php?id=10&s=sp-whoisactive-kto-co-prave-robi-na-serveri), aplikačný tím |

## 2. Príprava nového servera

- Rovnaká alebo novšia verzia, **rovnaká serverová collation** (ak sa líši, temp tabuľky a porovnania v kóde sa môžu správať inak).
- Konfigurácia (max memory, MAXDOP, cost threshold, tempdb) podľa nového HW – nie slepo skopírovaná.
- Loginy so **zachovaným SID** (`Copy-DbaLogin` / `sp_help_revlogin`) – potom nevzniknú orphaned users.
- Certifikát TDE s privátnym kľúčom obnovený do master **pred** restore databázy.
- Linked servery, credentials, operátori, joby (zatiaľ **vypnuté**).

## 3. Metóda presunu

| Metóda | Výpadok | Kedy |
|---|---|---|
| FULL backup / restore + DIFF / LOG na cutover | minúty | štandard pre väčšinu databáz |
| Log shipping | minúty | veľké DB, dlhšie obdobie súbežného behu |
| Always On AG (pridať novú repliku, failover) | sekundy | už máte AG alebo potrebujete minimálny výpadok |
| `Start-DbaMigration` (dbatools) | podľa metódy | celá inštancia naraz – loginy, joby, linked servery, Database Mail, sp_configure… |

`Start-DbaMigration` je súčasť [dbatools](https://dbatools.io/Start-DbaMigration/) (autorka Chrissy LeMaire a komunita, licencia MIT); prenáša databázy (`-BackupRestore -SharedPath` alebo `-UseLastBackup`) aj serverové objekty. Kód berieme vždy z originálu.

## 4. Cutover krok za krokom

1. Pár dní pred: FULL restore na nový server `WITH NORECOVERY`, potom priebežne DIFF / LOG `WITH NORECOVERY`.
2. Oznám okno výpadku, zastav aplikácie a joby na starom serveri.
3. Posledný **tail-log backup** na starom serveri `WITH NORECOVERY` (stará DB ostane v RESTORING – nikto do nej omylom nezapíše).
4. Obnov posledný log na novom serveri a potom `RESTORE DATABASE … WITH RECOVERY`.
5. Prepni connection stringy / DNS alias.
6. Zapni joby, over prvé behy.

## 5. Po migrácii

- [Orphaned users](script.php?id=37&s=orphaned-users-pouzivatelia-bez-loginu) – ak sa loginy neprenášali so SID.
- Vlastník databázy (`ALTER AUTHORIZATION`), `TRUSTWORTHY` len ak je naozaj nutný – [Bezpečnostný baseline](script.php?id=53&s=bezpecnostny-baseline-instancie).
- **Compatibility level** – zvyšuj vedome; najprv nechaj pôvodný, zapni [Query Store](script.php?id=46&s=query-store-konfiguracia-a-stav), zbieraj baseline a až potom zvýš (regresie odhalí [Query Store – regresie](script.php?id=26&s=query-store-regresie-24-h-vs-predoslych-24-h)).
- `UPDATE STATISTICS` (pri upgrade verzie odporúčané) a [DBCC CHECKDB](script.php?id=34&s=dbcc-checkdb-sablona-s-dry-run).
- `PAGE_VERIFY CHECKSUM`, recovery model, zálohy a údržba bežia na **novom** serveri.
- Test aplikácie, monitoring, alerty (9002, 823–825, závažnosť 19–25), dokumentácia.
- Starý server nechaj chvíľu vypnutý, ale k dispozícii – cesta späť.

## Zdroje

- [Start-DbaMigration (dbatools, MIT)](https://dbatools.io/Start-DbaMigration/)
- [Tail-log backups](https://learn.microsoft.com/en-us/sql/relational-databases/backup-restore/tail-log-backups-sql-server)
- [Transparent data encryption (TDE)](https://learn.microsoft.com/en-us/sql/relational-databases/security/encryption/transparent-data-encryption)