Database MuOnline: Guia Completo de Tabelas, SQL, Backup e Erros
Entenda como funciona a database MuOnline, quais dados são armazenados, as principais tabelas utilizadas pelo servidor, como fazer backup e restore, verificar compatibilidade com a source e corrigir erros de colunas, procedures e conexão SQL.
A database MuOnline é uma das partes mais importantes de muitos servidores privados de MU Online. É nela que ficam armazenadas informações fundamentais utilizadas pelos serviços do MuServer.
Dependendo da versão e da source, a database pode armazenar dados de contas, personagens, inventários, warehouses, guilds, resets, status online, moedas, configurações adicionais e sistemas personalizados.
Quando a database está incompleta, incompatível ou configurada incorretamente, podem surgir erros como Invalid Column Name, Invalid Object Name, Stored Procedure não encontrada, Cannot Open Database, DataServer Connect Fail e falhas ao carregar personagens.
Neste guia do Aprendiz MU Online, você aprenderá como funciona a database MuOnline e quais cuidados devem ser tomados ao instalar, restaurar, editar ou migrar um servidor.
O que é a database MuOnline?
A MuOnline normalmente é a database principal utilizada para armazenar grande parte dos dados persistentes de um servidor MU Online.
Em uma instalação tradicional, ela fica hospedada no Microsoft SQL Server e é acessada por componentes do servidor através do DataServer ou outros serviços, dependendo da arquitetura.
Uma visão simplificada seria:
GameServer
|
v
DataServer
|
v
SQL Server
|
v
Database MuOnline
|
+-- Character
+-- MEMB_INFO
+-- warehouse
+-- Guild
+-- outras tabelas
Para que serve a database MuOnline?
Dependendo da source, ela pode armazenar:
- contas;
- personagens;
- nível;
- experiência;
- atributos;
- inventários;
- warehouses;
- guilds;
- posições nos mapas;
- money;
- resets;
- master resets;
- PK;
- status de contas;
- VIP;
- moedas customizadas;
- sistemas adicionados pela source.
Como funciona a estrutura da database?
Uma database SQL é organizada em tabelas.
Cada tabela contém colunas, e cada coluna representa determinado tipo de informação.
Exemplo simplificado:
Character
--------------------------------
Name
AccountID
Class
cLevel
LevelUpPoint
Strength
Dexterity
Vitality
Energy
Money
MapNumber
MapPosX
MapPosY
Um personagem ocupa uma linha da tabela e seus dados são separados pelas colunas correspondentes.
Principais tabelas da database MuOnline
Os nomes variam entre diferentes versões e sources, mas existem tabelas muito comuns.
| Tabela | Uso comum |
|---|---|
| Character | Informações dos personagens. |
| MEMB_INFO | Dados das contas. |
| MEMB_STAT | Status de conexão em várias estruturas. |
| warehouse | Baú da conta. |
| AccountCharacter | Relacionamento entre conta e personagens. |
| Guild | Informações de guild. |
| GuildMember | Membros das guilds. |
Tabela Character
A tabela Character costuma ser uma das mais importantes
da database.
Ela armazena os personagens criados pelos jogadores.
Colunas frequentemente encontradas incluem:
AccountID
Name
Class
cLevel
Experience
LevelUpPoint
Strength
Dexterity
Vitality
Energy
Money
MapNumber
MapPosX
MapPosY
Inventory
MagicList
Sources customizadas também podem possuir:
ResetCount
ResetsG
MResets
PkCount
ResetsWeek
ResetsMonth
Consulta simples de personagens
SELECT TOP 20
Name,
Class,
cLevel
FROM Character
ORDER BY cLevel DESC;
Sempre confirme se os campos existem antes de executar consultas em uma database diferente.
Tabela MEMB_INFO
Em muitas estruturas tradicionais,
MEMB_INFO armazena informações relacionadas às contas.
Dependendo da versão, você poderá encontrar campos como:
memb___id
memb__pwd
memb_name
sno__numb
mail_addr
Sources personalizadas podem adicionar campos como:
AccountLevel
AccountExpireDate
Credits
Level
Esses campos não existem obrigatoriamente em todas as databases.
MEMB_STAT
A tabela MEMB_STAT é encontrada em diversas
estruturas para armazenar informações relacionadas à conexão.
Exemplos de campos encontrados em algumas versões:
memb___id
ConnectStat
ServerName
IP
ConnectTM
DisConnectTM
Essa tabela pode ser usada por sites para mostrar jogadores ou contas online.
Tabela warehouse
A tabela warehouse normalmente armazena informações
do baú da conta.
Dependendo da versão, o inventário do warehouse pode ser armazenado em uma coluna binária.
Por isso, não é recomendado editar esse conteúdo manualmente sem conhecer o formato utilizado pela source.
Guild e GuildMember
Muitas databases tradicionais utilizam tabelas relacionadas a guilds.
Você poderá encontrar:
Guild
GuildMember
Dependendo da implementação, essas tabelas armazenam:
- nome da guild;
- guild master;
- membros;
- status;
- informações adicionais da guild.
AccountCharacter
A tabela AccountCharacter é utilizada em várias
versões para relacionar a conta aos personagens criados.
Ela também pode guardar informações sobre o último personagem selecionado.
Como consultar uma conta
Uma consulta simples pode ser:
SELECT *
FROM MEMB_INFO
WHERE memb___id = 'usuario';
Troque usuario pelo login que deseja consultar.
Como consultar personagens de uma conta
SELECT
Name,
Class,
cLevel
FROM Character
WHERE AccountID = 'usuario';
Esse tipo de consulta é útil para diagnóstico e desenvolvimento de painéis administrativos.
Como fazer backup da database MuOnline
Antes de realizar qualquer alteração importante, faça backup.
Isso inclui:
- importar scripts;
- adicionar colunas;
- migrar database;
- atualizar server files;
- alterar procedures;
- executar UPDATE em massa.
Backup pelo SQL Server Management Studio
Como restaurar a database MuOnline
Ao instalar novos server files, muitas vezes é necessário restaurar uma database fornecida pelo desenvolvedor.
No SQL Server Management Studio:
- clique em Databases;
- escolha Restore Database;
- selecione o arquivo de backup;
- defina o nome da database;
- revise os caminhos dos arquivos;
- execute a restauração.
Database já existe
Se já houver uma database chamada MuOnline,
avalie cuidadosamente antes de sobrescrever.
Faça backup da database atual antes de qualquer restore.
Como verificar se a database está online
No SQL Server Management Studio, a database precisa estar disponível normalmente.
Você também pode executar:
USE MuOnline;
SELECT TOP 1 *
FROM Character;
Se a consulta funcionar, você confirma pelo menos que o SQL conseguiu acessar a database e localizar aquela tabela.
Database precisa ser compatível com a source
Este é um dos conceitos mais importantes deste guia.
Não basta possuir uma database chamada MuOnline.
Ela precisa possuir a estrutura que o GameServer, DataServer, JoinServer e demais serviços esperam encontrar.
Um GameServer customizado pode esperar:
ResetCount
MResets
AccountLevel
Credits
PkCount
enquanto uma database original pode não possuir esses campos.
O que acontece quando a database é incompatível?
Você poderá encontrar erros como:
Invalid column name
Invalid object name
Could not find stored procedure
String or binary data would be truncated
Arithmetic overflow error
Cada erro aponta para um tipo diferente de incompatibilidade.
Invalid Column Name
Exemplo:
Invalid column name 'ResetCount'
Isso significa que uma consulta tentou acessar uma coluna
chamada ResetCount, mas ela não existe na tabela
consultada.
Possíveis causas:
- database antiga;
- script UPDATE não executado;
- GameServer de outra source;
- site esperando campos customizados;
- migration incompleta.
Invalid Object Name
Uma mensagem semelhante a:
Invalid object name 'CashShopData'
geralmente indica que uma tabela ou objeto esperado não foi encontrado.
Verifique:
- database selecionada;
- tabela existente;
- scripts de instalação;
- nome correto do objeto;
- compatibilidade da source.
Stored Procedure não encontrada
Exemplo:
Could not find stored procedure
A aplicação conseguiu chegar ao SQL, mas a procedure requisitada não existe naquela database.
Procure os scripts SQL fornecidos com o projeto.
Cannot Open Database MuOnline
Esse erro pode ocorrer quando o login consegue chegar ao SQL Server, mas não consegue acessar a database.
Verifique:
- database existente;
- database online;
- nome correto;
- permissão do login;
- database padrão.
String or Binary Data Would Be Truncated
Esse erro acontece quando você tenta gravar um valor maior do que o tamanho permitido por determinada coluna.
Exemplo conceitual:
Coluna Name = varchar(10)
Valor enviado:
PersonagemMuitoGrande
O valor ultrapassa o limite definido.
Arithmetic Overflow
Outro erro comum acontece quando um número ultrapassa o limite do tipo de dado.
Exemplo:
smallint
possui uma faixa limitada.
Se uma source customizada tenta gravar valores muito maiores, pode ocorrer overflow.
Problemas de Collation
Ao migrar databases ou executar JOIN entre tabelas de origens diferentes, você pode encontrar conflitos de collation.
Exemplos de collations encontradas em diferentes databases:
Latin1_General_CI_AS
Chinese_PRC_CI_AS
Quando duas colunas com collations incompatíveis são comparadas, o SQL pode gerar erro.
Como descobrir as colunas de uma tabela
No SQL Server Management Studio, você pode expandir:
Databases
|
+-- MuOnline
|
+-- Tables
|
+-- dbo.Character
|
+-- Columns
Outra opção é executar:
sp_help 'Character';
Como descobrir o tipo de uma coluna
O comando:
sp_help 'Character';
também ajuda a visualizar:
- nome da coluna;
- tipo;
- tamanho;
- aceita NULL;
- índices;
- outras propriedades.
Como fazer uma consulta segura antes de editar
Antes de executar um UPDATE, faça primeiro um SELECT utilizando o mesmo filtro.
Exemplo:
SELECT *
FROM Character
WHERE Name = 'Personagem';
Depois de confirmar que o registro está correto, você pode planejar a alteração.
Cuidado com UPDATE sem WHERE
Um comando como:
UPDATE Character
SET Money = 0;
altera todos os personagens.
Já:
UPDATE Character
SET Money = 0
WHERE Name = 'Personagem';
limita a alteração ao registro filtrado.
Segurança da database MuOnline
A database contém informações críticas do servidor.
Portanto:
- não exponha o SQL diretamente à internet sem necessidade;
- utilize senhas fortes;
- evite usar credenciais padrão;
- limite permissões;
- mantenha backups;
- controle o acesso ao SQL Server;
- não publique senhas em prints ou arquivos.
Backup automático é recomendado?
Sim.
Em um servidor em produção, depender somente de backups manuais aumenta o risco de perda de dados.
O ideal é manter uma política de backup compatível com a frequência de alterações da sua database.
Migração da database para outro servidor
Ao migrar a MuOnline para outra máquina, verifique:
- backup recente;
- versão do SQL Server;
- logins;
- usuários internos da database;
- permissões;
- ODBC;
- nome da instância;
- arquivos de configuração do DataServer;
- collation quando relevante.
Database restaurada, mas DataServer não conecta
Restaurar a database não garante que o login utilizado pelo DataServer esteja corretamente configurado.
Verifique:
- usuário SQL;
- senha;
- mapeamento do usuário na database;
- permissões;
- nome da database;
- ODBC.
Como saber se a database é da mesma source?
Compare:
- documentação;
- scripts SQL;
- nomes das tabelas;
- colunas customizadas;
- stored procedures;
- queries executadas pelo GameServer;
- versão dos server files.
Ordem recomendada para instalar a database
Checklist da Database MuOnline
| Verificação | Resultado esperado |
|---|---|
| SQL Server | Iniciado. |
| MuOnline | Database online. |
| Character | Tabela disponível. |
| MEMB_INFO | Estrutura compatível. |
| warehouse | Estrutura correta para a source. |
| Procedures | Scripts obrigatórios instalados. |
| Login SQL | Possui acesso ao banco. |
| DataServer | Conecta normalmente. |
| GameServer | Sem erros de estrutura SQL. |
| Backup | Cópia recente disponível. |
| Source | Compatível com a database. |
Perguntas frequentes sobre a Database MuOnline
O que é a database MuOnline?
É a database principal utilizada por muitas arquiteturas de MU Online para armazenar informações persistentes de contas, personagens, itens, guilds e outros sistemas.
Onde ficam os personagens no SQL do MU Online?
Em muitas estruturas, os personagens ficam na tabela
Character.
Onde ficam as contas do MU Online?
Em várias databases tradicionais, informações de contas
ficam na tabela MEMB_INFO.
Posso usar qualquer database MuOnline?
Não. Ela precisa ser compatível com a source, GameServer, DataServer e demais componentes.
O que significa Invalid Column Name?
Significa que uma aplicação ou consulta tentou acessar uma coluna que não existe na estrutura atual da tabela.
Posso adicionar a coluna que está faltando?
Somente depois de confirmar a definição correta nos scripts ou na database original da source.
Como fazer backup da MuOnline?
O SQL Server Management Studio permite gerar um backup da database através do menu Tasks e Back Up.
Por que DataServer conecta no SQL mas não abre MuOnline?
Verifique o nome da database, permissões do login, usuário mapeado e status da database.
Posso editar itens diretamente no warehouse?
Não é recomendado sem conhecer a estrutura binária utilizada pela sua versão do MU Online.
Conclusão
A database MuOnline é a base de armazenamento de grande parte das informações utilizadas por um servidor privado de MU Online.
Para administrá-la corretamente, é necessário compreender suas principais tabelas, permissões, procedures, tipos de dados, backups e principalmente a compatibilidade com a source utilizada.
Se aparecer um erro como Invalid Column Name, Invalid Object Name ou Stored Procedure não encontrada, não modifique a database aleatoriamente. Compare primeiro os scripts e a estrutura original dos server files.
Também mantenha backups frequentes antes de atualizar sistemas, executar scripts ou modificar dados importantes.
Esse conhecimento é essencial para administrar servidores MU Online 97D, 99z, Season 2, Season 6 e projetos personalizados.