O maior portal de MU Online do Brasil — desde 2003
Tutorial Avançado Tutoriais

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.

EQ Equipe ViciadosMU · Atualizado em 3 jul 2026 · ⏱ 12 min de leitura

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.

Atenção: Nunca execute a migração com o GameServer rodando. Desligue todos os serviços (GameServer.exe, ConnectServer.exe, DataServer.exe, EventServer.exe) antes de qualquer backup.

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 MuOnlineAll TasksBackup 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'
Dica: Copie o arquivo 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 DatabasesRestore 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);
Nota: As stored procedures do MuServer S6 que usam 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
Atenção: Não use 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 DSNAdd → 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.1 ou IP do SQL 2019
  • Autenticação SQL: login muonline e senha

6.4 Edite GameServer/GameServer.ini:

[ServerInfo]
DBAddr    = 127.0.0.1
DBPort    = 1433
DBID      = muonline
DBPwd     = SuaSenhaAqui123!
DBName    = MuOnline
Dica: Alguns MuServer mais antigos usam 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

ErroCausaSolução
Database cannot be opened. It is in the middle of a restoreRestore incompletoExecute RESTORE DATABASE MuOnline WITH RECOVERY;
Login failed for user 'muonline'Login não mapeadoRepita o passo 5 — verifique sys.syslogins
Named Pipes Provider, error 40SQL não está aceitando conexões TCPHabilite TCP/IP no SQL Server Configuration Manager
GameServer não conecta após migraçãoDSN ODBC apontando para instância antigaRecrie o DSN System conforme Etapa 6
Arithmetic overflow em stored proceduresCompatibilidade ainda em 80Confirme SELECT compatibility_level FROM sys.databases WHERE name = 'MuOnline' — deve ser 150
Nota: Se o seu MuServer usa stored procedures que referenciam 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.

EQ

Equipe ViciadosMU

Equipe editorial do ViciadosMU — portal de MU Online no ar desde 2003.

Continue lendo

Artigos relacionados