Como Migrar Banco de SQL Server 2000 para SQL Server 2019 no MU
Guia completo para migrar o banco MuOnline do SQL Server 2000 para o SQL Server 2019 sem perder dados de personagens, contas ou itens.
Migrar o banco de dados do MU Online de SQL Server 2000 para SQL Server 2019 é um processo que exige etapas intermediárias — não existe caminho direto. Este guia detalha o processo completo, do backup inicial até a reconexão do GameServer.
Por que a migração exige servidor intermediário
O SQL Server 2019 não suporta restaurar backups gerados pelo SQL Server 2000 (nível de compatibilidade 80). O caminho obrigatório é:
SQL Server 2000 → SQL Server 2008 R2 (intermediário) → SQL Server 2019
Se o seu servidor já roda SQL Server 2008 ou 2012, você pode pular a primeira etapa e partir diretamente do servidor intermediário.
Etapa 1 — Backup completo no SQL Server 2000
1.1 Abra o SQL Server Enterprise Manager (SQL 2000) → expanda o servidor → clique em Databases → botão direito em MuOnline → All Tasks → Backup Database.
1.2 Configure o backup:
- Backup type: Database - complete
- Destination: adicione o caminho
C:\Backup\MuOnline_2000.bak - Marque Overwrite existing media
1.3 Clique em OK e aguarde a conclusão. Confirme o arquivo gerado:
-- Execute no Query Analyzer para verificar integridade
RESTORE VERIFYONLY FROM DISK = 'C:\Backup\MuOnline_2000.bak'
MuOnline_2000.bak para um HD externo ou outra máquina antes de continuar. Backups duplos evitam perdas irreversíveis.Etapa 2 — Restaurar no SQL Server 2008 R2 (servidor intermediário)
2.1 No servidor com SQL Server 2008 R2, abra o SQL Server Management Studio (SSMS).
2.2 Botão direito em Databases → Restore Database:
- To database:
MuOnline_v2008 - From device: selecione
C:\Backup\MuOnline_2000.bak - Aba Options: marque Overwrite the existing database (WITH REPLACE)
2.3 Execute a restauração. Se aparecer erro de arquivo físico (.mdf/.ldf), ajuste os caminhos na aba Files:
RESTORE DATABASE MuOnline_v2008
FROM DISK = 'C:\Backup\MuOnline_2000.bak'
WITH MOVE 'MuOnline_Data' TO 'C:\SQL\Data\MuOnline_v2008.mdf',
MOVE 'MuOnline_Log' TO 'C:\SQL\Log\MuOnline_v2008.ldf',
REPLACE;
2.4 Eleve o nível de compatibilidade para 100 (SQL 2008):
USE master;
ALTER DATABASE MuOnline_v2008 SET COMPATIBILITY_LEVEL = 100;
GO
2.5 Verifique e corrija objetos deprecated antes de seguir. Execute:
USE MuOnline_v2008;
GO
-- Identifica tipos de dados obsoletos
SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE DATA_TYPE IN ('text', 'ntext', 'image')
AND TABLE_CATALOG = 'MuOnline_v2008'
ORDER BY TABLE_NAME;
2.6 Para cada coluna encontrada, converta o tipo. Exemplo para a tabela T_Account:
-- Backup da coluna antes de converter
ALTER TABLE T_Account ADD AccountID_bak VARCHAR(10);
UPDATE T_Account SET AccountID_bak = CAST(AccountID AS VARCHAR(10));
-- Conversão (adapte coluna e tipo conforme resultado acima)
ALTER TABLE T_Character ALTER COLUMN MemoInfo NVARCHAR(MAX);
ALTER TABLE T_GuildMember ALTER COLUMN GuildMasterMemo NVARCHAR(MAX);
READTEXT ou WRITETEXT precisam ser reescritas para usar SELECT/UPDATE padrão após a conversão dos tipos.Etapa 3 — Gerar novo backup no SQL 2008 R2
3.1 Com o banco corrigido, gere um backup limpo:
BACKUP DATABASE MuOnline_v2008
TO DISK = 'C:\Backup\MuOnline_2008.bak'
WITH FORMAT, COMPRESSION, STATS = 10;
3.2 Verifique a integridade:
RESTORE VERIFYONLY FROM DISK = 'C:\Backup\MuOnline_2008.bak';
Etapa 4 — Restaurar no SQL Server 2019
4.1 Copie MuOnline_2008.bak para o servidor que roda SQL Server 2019.
4.2 No SSMS conectado ao SQL 2019, execute:
RESTORE DATABASE MuOnline
FROM DISK = 'C:\Backup\MuOnline_2008.bak'
WITH MOVE 'MuOnline_Data' TO 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\MuOnline.mdf',
MOVE 'MuOnline_Log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\MuOnline_log.ldf',
REPLACE, STATS = 5;
GO
4.3 Eleve a compatibilidade para SQL 2019:
ALTER DATABASE MuOnline SET COMPATIBILITY_LEVEL = 150;
GO
4.4 Habilite as opções recomendadas para desempenho:
ALTER DATABASE MuOnline SET RECOVERY SIMPLE;
ALTER DATABASE MuOnline SET AUTO_UPDATE_STATISTICS ON;
ALTER DATABASE MuOnline SET PAGE_VERIFY CHECKSUM;
GO
Etapa 5 — Recriar login SQL e permissões
No SQL 2019 os logins do SQL 2000 não são transferidos automaticamente.
5.1 Crie o login usado pelo GameServer (ex: muonline):
USE master;
CREATE LOGIN muonline WITH PASSWORD = 'SuaSenhaAqui123!',
DEFAULT_DATABASE = MuOnline,
CHECK_EXPIRATION = OFF,
CHECK_POLICY = OFF;
GO
5.2 Vincule ao banco e conceda permissões:
USE MuOnline;
CREATE USER muonline FOR LOGIN muonline;
ALTER ROLE db_owner ADD MEMBER muonline;
GO
db_owner em produção se quiser segmentação. Crie uma role customizada com permissões apenas nas tabelas necessárias (T_Account, T_Character, T_Item, etc.).Etapa 6 — Reconfigurar ODBC e GameServer.ini
6.1 No Windows do servidor de jogo, abra o ODBC de 64 bits: C:\Windows\System32\odbcad32.exe
6.2 Aba System DSN → Add → selecione ODBC Driver 17 for SQL Server (instale de https://aka.ms/downloadmsodbcsql se necessário).
6.3 Configure:
- Name:
GameServer(ou o nome que já existe no ini) - Server:
127.0.0.1ou IP do SQL 2019 - Autenticação SQL: login
muonlinee senha
6.4 Edite GameServer/GameServer.ini:
[ServerInfo]
DBAddr = 127.0.0.1
DBPort = 1433
DBID = muonline
DBPwd = SuaSenhaAqui123!
DBName = MuOnline
DataServer/DataServer.ini para a string de conexão. Verifique os dois arquivos e atualize conforme necessário.Etapa 7 — Verificação pós-migração
7.1 Verifique contagem de registros principais para confirmar integridade:
USE MuOnline;
SELECT 'T_Account' AS Tabela, COUNT(*) AS Total FROM T_Account
UNION ALL
SELECT 'T_Character', COUNT(*) FROM T_Character
UNION ALL
SELECT 'T_Item', COUNT(*) FROM T_Item
UNION ALL
SELECT 'T_Guild', COUNT(*) FROM T_Guild;
7.2 Inicie o DataServer.exe e verifique o log em DataServer/Log/DataServer_YYYYMMDD.log — não deve conter erros de conexão.
7.3 Inicie GameServer.exe e ConnectServer.exe. Teste login com uma conta de GM.
7.4 Confirme que itens, posições e stats de personagens estão intactos:
SELECT Name, Class, Level, Strength, Dexterity, Vitality, Energy
FROM T_Character
WHERE Name = 'NomeDoSeuPersonagem';
Troubleshooting comum
| Erro | Causa | Solução |
|---|---|---|
Database cannot be opened. It is in the middle of a restore | Restore incompleto | Execute RESTORE DATABASE MuOnline WITH RECOVERY; |
Login failed for user 'muonline' | Login não mapeado | Repita o passo 5 — verifique sys.syslogins |
Named Pipes Provider, error 40 | SQL não está aceitando conexões TCP | Habilite TCP/IP no SQL Server Configuration Manager |
| GameServer não conecta após migração | DSN ODBC apontando para instância antiga | Recrie o DSN System conforme Etapa 6 |
Arithmetic overflow em stored procedures | Compatibilidade ainda em 80 | Confirme SELECT compatibility_level FROM sys.databases WHERE name = 'MuOnline' — deve ser 150 |
syscolumns, sysobjects ou outras views do catálogo do SQL 2000, elas ainda funcionam no SQL 2019 via modo de compatibilidade, mas o ideal é migrar para sys.columns, sys.objects etc. a longo prazo.Perguntas frequentes
Posso migrar direto do SQL 2000 para o 2019 sem um servidor intermediário?
Não. O SQL Server 2019 não abre backups (.bak) criados no SQL 2000 diretamente. É obrigatório usar um SQL Server intermediário (2008 R2 ou 2012) para primeiro elevar o nível de compatibilidade do banco para 80→100, depois gerar um novo .bak e só então restaurar no 2019.
O banco MuOnline tem alguma tabela que quebra na migração?
Sim. As colunas do tipo 'text', 'ntext' e 'image' usadas em versões antigas do MuServer (ex: T_Account, T_Character) podem gerar warnings. Execute SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE DATA_TYPE IN ('text','ntext','image') AND TABLE_CATALOG='MuOnline' para identificar e converter para VARCHAR(MAX), NVARCHAR(MAX) e VARBINARY(MAX) antes de migrar.
Após migrar, o GameServer conecta mas não lista personagens. O que verificar?
Verifique o DSN ODBC configurado em GameServer/GameServer.ini (entrada DBAddr, DBPort, DBID, DBPwd). No SQL 2019 o driver ODBC muda — use 'ODBC Driver 17 for SQL Server' em vez do 'SQL Server' legado. Recrie o DSN no painel ODBC de 64 bits (C:/Windows/System32/odbcad32.exe).
Preciso alterar o nível de compatibilidade após restaurar no SQL 2019?
Sim. Execute: ALTER DATABASE MuOnline SET COMPATIBILITY_LEVEL = 150; para SQL 2019. Compatibilidade 80 (SQL 2000) impede o uso de funções modernas e pode causar erros em stored procedures do MuServer mais recentes.