Siga-nos em...
Follow us on Twitter Follow us on Facebook Watch us on YouTube
Registro


Alpha Servers
Resultados 1 a 1 de 1
  1. #1



    Avatar de Erick-Master
    Data de Ingresso
    Jul 2010
    Localização
    Lorencia :D
    Posts
    401
    Agradecido
    428
    Agradeceu
    152
    Peso da Avaliação
    16

    Padrão Corrigir collation Master Skill Tree

    Olá pessoal!

    Já a bastante tempo que antigos clientes da Effect Web enfrentaram problemas com collation.
    O problema se resume exclusivamente a tabela T_MasterLevelSystem, responsável pelo Master Skill Tree.

    O Agnis Project utiliza os arquivos do GameServer 1.00.90, originalmente pela WebZen.
    Sendo assim, o banco de dados também é original e a WebZen é "perfeita" em SQL Server.

    Trago aqui um script em SQL Server, feito por mim, responsável por resolver este problema.
    Abaixo informo as etapas em que ele processa:


    1. Cria uma tabela temporária
    2. Lista todos personagens na T_MasterLevelSystem
    3. Procura pelos personagens na tabela Character, considerando o Case Sensitive
    4. Move os personagens para a tabela temporária
    5. Renomeia a tabela T_MasterLevelSystem original para "T_MasterLevelSystem_Trash" contendo apenas dados perdidos
    6. Cria a T_MasterLevelSystem sem collation e com estrutura corrigida
    7. Move todos os dados da tabela temporária para a "nova" T_MasterLevelSystem
    8. Deleta a tabela temporária
    9. Exibe uma mensagem informando a quantidade de personagens migrados e perdidos


    O script foi feito utilizando transaction do SQL, ou seja, em caso de algum erro durante o processo, ele retorna tudo como estava antes.
    Ou seja, é totalmente seguro e seu banco de dados não irá ser afetado em caso de falha do script.

    O servidor (principalmente GameServer e DataServer) devem estar completamente desligados.
    Rode o script utilizando o SQL Management Studio, ou Query Analyzer se você for do museu
    Recomendo que rode pelo próprio servidor ou dedicado responsável pela hospedagem do SQL Server.

    Espero que ajude vocês, pois os relatos foram muitos e eu também tive problema ao implantar a web.
    Segue o script:

    Código:
    ----------------------------------------------------- 
    -- Scripts para corrigir o collation
    -- Este script irá migrar e recriar a tabela de Master Level
    -- Script para o servidor da WH Team Season 4.6 JPN
    ---------------------------------------------------
    -- Powered by Erick-Master
    ---------------------------------------------------
    
    
    USE [MuOnline]
    GO
    
    
    ------------------------------------------
    -- Inicia a transação
    ------------------------------------------
    BEGIN TRANSACTION ExportMasterLevel
    BEGIN TRY
    	SET NOCOUNT ON
    	
    	------------------------------------------
    	-- Cria tabela temporária
    	------------------------------------------
    	CREATE TABLE [dbo].[#MasterLevelSystem]
    	(
    		[Name] varchar(10) NOT NULL,
    		[MasterLevel] smallint NULL,
    		[MasterExperience] bigint NULL,
    		[MasterNextExperience] bigint NULL,
    		[MasterPoint] smallint NULL
    	)
    
    
    	------------------------------------------
    	-- Cursor para migrar todas as contas
    	-- Tabela temporária
    	------------------------------------------
    	DECLARE @Count int
    	DECLARE @CountTrash int
    	
    	DECLARE @Name varchar(10)
    	DECLARE @MasterLevel smallint
    	DECLARE @MasterExperience bigint
    	DECLARE @MasterNextExperience bigint
    	DECLARE @MasterPoint smallint
    
    
    	SET @Count = 0
    	SET @CountTrash = 0
    
    
    	DECLARE ExportMasterLevelTempCursor CURSOR
    	FOR
    		SELECT
    			ML.CHAR_NAME, ML.MASTER_LEVEL, ML.ML_EXP, ML.ML_NEXTEXP, ML.ML_POINT
    		FROM T_MasterLevelSystem ML
    			JOIN Character C ON (C.Name COLLATE Korean_Wansung_CS_AS_KS_WS = ML.CHAR_NAME COLLATE Korean_Wansung_CS_AS_KS_WS)
    		WHERE
    			ML.CHAR_NAME IS NOT NULL
    	OPEN ExportMasterLevelTempCursor
    	
    	FETCH NEXT FROM ExportMasterLevelTempCursor
    	INTO
    		@Name, @MasterLevel, @MasterExperience, @MasterNextExperience, @MasterPoint
    		
    	WHILE(@@FETCH_STATUS = 0)
    	BEGIN
    		INSERT INTO [dbo].[#MasterLevelSystem] (Name, MasterLevel, MasterExperience, MasterNextExperience, MasterPoint)
    			VALUES (@Name, @MasterLevel, @MasterExperience, @MasterNextExperience, @MasterPoint)
    	
    		SET @Count = @Count + 1
    		
    		DELETE FROM T_MasterLevelSystem WHERE CHAR_NAME = @Name
    		
    		SET @Name = NULL
    		SET @MasterLevel = NULL
    		SET @MasterExperience = NULL
    		SET @MasterNextExperience = NULL
    		SET @MasterPoint = NULL
    		
    		FETCH NEXT FROM ExportMasterLevelTempCursor
    		INTO
    			@Name, @MasterLevel, @MasterExperience, @MasterNextExperience, @MasterPoint
    	END
    	
    	CLOSE ExportMasterLevelTempCursor
    	DEALLOCATE ExportMasterLevelTempCursor
    	
    	SELECT @CountTrash = COUNT(CHAR_NAME) FROM T_MasterLevelSystem
    	EXEC sp_rename N'T_MasterLevelSystem', N'T_MasterLevelSystem_Trash'
    	
    	------------------------------------------
    	-- Cria a nova tabela corrigida
    	------------------------------------------
    	CREATE TABLE [dbo].[T_MasterLevelSystem]
    	(
    		[CHAR_NAME] varchar(10) NOT NULL CONSTRAINT PK_T_MasterLevelSystem PRIMARY KEY(CHAR_NAME),
    		[MASTER_LEVEL] smallint NOT NULL CONSTRAINT DF_T_MasterLevelSystem_MASTER_LEVEL DEFAULT(0),
    		[ML_EXP] bigint NOT NULL CONSTRAINT DF_T_MasterLevelSystem_ML_EXP DEFAULT(0),
    		[ML_NEXTEXP] bigint NOT NULL CONSTRAINT DF_T_MasterLevelSystem_ML_NEXTEXP DEFAULT(0),
    		[ML_POINT] smallint NOT NULL CONSTRAINT DF_T_MasterLevelSystem_ML_POINT DEFAULT(0)
    	)
    	
    	SET @Name = NULL
    	SET @MasterLevel = NULL
    	SET @MasterExperience = NULL
    	SET @MasterNextExperience = NULL
    	SET @MasterPoint = NULL
    	
    	DECLARE ExportMasterLevelNewTableCursor CURSOR
    	FOR
    		SELECT
    			Name, MasterLevel, MasterExperience, MasterNextExperience, MasterPoint
    		FROM [dbo].[#MasterLevelSystem]
    	OPEN ExportMasterLevelNewTableCursor
    	
    	FETCH NEXT FROM ExportMasterLevelNewTableCursor
    	INTO
    		@Name, @MasterLevel, @MasterExperience, @MasterNextExperience, @MasterPoint
    		
    	WHILE(@@FETCH_STATUS = 0)
    	BEGIN
    		INSERT INTO T_MasterLevelSystem (CHAR_NAME, MASTER_LEVEL, ML_EXP, ML_NEXTEXP, ML_POINT)
    			VALUES (@Name, @MasterLevel, @MasterExperience, @MasterNextExperience, @MasterPoint)
    			
    		SET @Name = NULL
    		SET @MasterLevel = NULL
    		SET @MasterExperience = NULL
    		SET @MasterNextExperience = NULL
    		SET @MasterPoint = NULL
    		
    		FETCH NEXT FROM ExportMasterLevelNewTableCursor
    		INTO
    			@Name, @MasterLevel, @MasterExperience, @MasterNextExperience, @MasterPoint
    	END
    	
    	CLOSE ExportMasterLevelNewTableCursor
    	DEALLOCATE ExportMasterLevelNewTableCursor
    	
    	------------------------------------------
    	-- Dropa a tabela temporária
    	------------------------------------------
    	DROP TABLE [dbo].[#MasterLevelSystem]
    	
    	------------------------------------------
    	-- Fim
    	------------------------------------------
    	PRINT '- Personagens migrados: ' + CAST(@Count AS varchar(6))
    	PRINT '- Personagens não-migrados: ' + CAST(@CountTrash AS varchar(6))
    	
    	------------------------------------------
    	-- Commit
    	------------------------------------------
    	SET NOCOUNT OFF
    	COMMIT TRANSACTION ExportMasterLevel
    END TRY
    BEGIN CATCH
    	------------------------------------------
    	-- Restaura a transação
    	------------------------------------------
    	ROLLBACK TRANSACTION ExportMasterLevel
    	
    	PRINT 'Ocorreu um erro no processo de migração.'
    	PRINT 'Toda a transação foi revertida.'
    	PRINT 'Erro: ' + ERROR_MESSAGE()
    END CATCH
    Façam bom uso!
    []'s
    Última edição por Erick-Master; 26-01-2015 às 08:12 AM.

  2. Os Seguintes 7 Usuários Agradeceram você Erick-Master Por este Post Útil:


 

 

Informações de Tópico

Usuários Navegando neste Tópico

Há 1 usuários navegando neste tópico. (0 registrados e 1 visitantes)

Tópicos Similares

  1. |Pedido| Summoner Master Skill
    Por Evandro Cabral no fórum Pedidos
    Respostas: 0
    Último Post: 15-04-2014, 01:39 PM
  2. |Dúvida| Master Skill Tree Summoner
    Por João Neto no fórum Dúvidas
    Respostas: 6
    Último Post: 05-07-2012, 05:45 PM
  3. |Pedido| Job Para Resetar skill tree 100% deixando pontos!!
    Por tovenis no fórum Arquivos MuOnline
    Respostas: 2
    Último Post: 23-05-2012, 04:43 PM
  4. |Download| Shield of Tree
    Por DetroiT no fórum Skins
    Respostas: 0
    Último Post: 03-04-2010, 07:22 PM

Marcadores

Permissões de Postagem

  • Você não pode iniciar novos tópicos
  • Você não pode enviar respostas
  • Você não pode enviar anexos
  • Você não pode editar suas mensagens
  •