--- title: Migração e Conversão de Collation (SQL Server) source: https://tdn.totvs.com/pages/viewpage.action?pageId=118882384 path: \Plataforma Documentação técnica\Instalação e Atualização\Conversão\Migração e Conversão de Collation (SQL Server).md --- - 1 [Objetivo](#MigraçãoeConversãodeCollation(SQLServer)-Objetivo) - 2 [Procedimento de migração e conversão de dados](#MigraçãoeConversãodeCollation(SQLServer)-Procedimentodemigraçãoeconversãodedados) # Objetivo --- O objetivo deste guia é indicar um método de migração dos dados de uma base com agrupamento de caracteres (*collation*) diferente do padrão "Latin1\_General\_CI\_AS" necessário para a correta utilização da base Fluig. # Procedimento de migração e conversão de dados --- Atenção! Esta operação deve ocorrer antes da conversão de uma base TOTVS ECM para TOTVS Fluig Plataforma. Mesmo com a alteração do agrupamento padrão, os campos existentes permanecem incorretos, podendo assim, causar comportamentos inesperados na utilização da plataforma. Acompanhe a seguir o checklist para a conversão. - Gere um **DUMP** desta base de dados do **TOTVS ECM 3.00**, com toda estrutura de tabelas e campos. - Para o SGBD **Microsoft SQL Server** utilize o procedimento a seguir: 1. Clique com o botão direito do mouse sobre a base de dados. 2. No menu suspenso escolha a opção **Tarefas > Gerar Scripts...** 3. Clique no botão **Próximo >** para passar a apresentação da Introdução do assistente para **Gerar e Publicar Scripts**. 4. Deixe selecionada a opção para **Gerar script de todo o banco de****dados** e **todos os objetos de banco de dados** e clique no botão **Próximo >**. 5. Na tela seguinte, no grupo **Tipo de Saída** e no grupo abaixo selecione a opção **Salvar** na nova janela de consulta. 6. Clique no botão **Avançado**. 7. Na tela de **Opções de Script Avançadas** altere a opção **Agrupamento de Scripts** para **True** e clique no botão **OK**. 8. Ao retornar a tela **Gerar e Publicar Scripts**clique no botão **Próximo >**. 9. Na etapa a seguir revise as configurações para geração do script da base. Clique no botão **Próximo >**. 10. Torne à janela do **Microsoft SQL Server Management Studio**. 11. Na nova janela aberta com o script, altere as seguintes linhas e proceda com as alterações abaixo citadas: 1. Substituir todas as ocorrências do nome antigo do banco de dados para **fluig**. (Aproximadamente 39 ocorrências). ``` -- antes CREATE DATABASE [byyouecm_ofi] -- depois CREATE DATABASE [fluig] -- comando -- replaceAll apenas na palavra byyouecm_ofi ``` 2. Substituir no nome do arquivo .**mdf** e do arquivo .**log** para **fluig**, bem como a label dos arquivos. ``` -- antes ON PRIMARY ( NAME = N'Webdesk300_Data', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\byyouecm_ofi.MDF' , SIZE = 5098688KB , MAXSIZE = UNLIMITED, FILEGROWTH = 10%) LOG ON ( NAME = N'Webdesk300_Log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\byyouecm_ofi_1.LDF' , SIZE = 52352KB , MAXSIZE = UNLIMITED, FILEGROWTH = 10%) -- depois ON PRIMARY ( NAME = N'Fluig_Data', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\fluig.MDF' , SIZE = 5098688KB , MAXSIZE = UNLIMITED, FILEGROWTH = 10%) LOG ON ( NAME = N'Fluig_Log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\fluig.LDF' , SIZE = 52352KB , MAXSIZE = UNLIMITED, FILEGROWTH = 10%) -- comando -- replaceAll apenas na palavra Webdesk300 ``` 3. Substituir a ocorrência da versão do banco de dados para o valor **110**. ``` -- antes ALTER DATABASE [fluig] SET COMPATIBILITY_LEVEL = 100 -- depois ALTER DATABASE [fluig] SET COMPATIBILITY_LEVEL = 110 ``` 4. Substituir a ocorrência do instantâneo de leitura de commit para **ON**. ``` -- antes ALTER DATABASE [fluig] SET READ_COMMITTED_SNAPSHOT OFF -- depois ALTER DATABASE [fluig] SET READ_COMMITTED_SNAPSHOT ON ``` 5. Substituir todas as ocorrências do **collation** antigo pelo novo **Latin1\_General\_CI\_AS**. (Aproximadamente 444 ocorrências). Importante! Independentemente da **collation** que a base ECM tenha, é necessário converter para '**Latin1\_General\_CI\_AS**', pois é o que o TOTVS Fluig espera como padrão, conforme descrito na documentação [Configuração do banco de dados SQL Server](../../Configuração/Configuração de Banco de Dados/Configuração do banco de dados SQL Server.md). 1. **CI** significa **Case Insensitive**, não diferenciando letras maiúsculas de minúsculas em suas queries. 2. **AS** significa **Accept Signal**, diferenciado acentuação nos campos de texto em suas queries. ``` -- antes COLLATE SQL_Latin1_General_CP1_CI_AI -- depois COLLATE Latin1_General_CI_AS -- comando -- replaceAll apenas na palavra SQL_Latin1_General_CP1_CI_AI ``` 12. Execute o script por inteiro. 13. Atualize o explorador de objetos do SQL Management Studio. 14. Deverá aparecer o novo banco **fluig**. - Proceda com a desativação das chaves (*constraints*) nas tabelas da base de dados **fluig**. Para o SGBD Microsoft SQL Server utilize a instrução a seguir: 1. Abra uma janela de Nova Consulta (menu **Arquivo > Novo > Consulta do Mecanismo de Banco de Dados**);. 2. Insira a consulta abaixo e a execute na nova base de dados. ``` DECLARE @TABLENAME VARCHAR(8000) DECLARE @TABLENAME_HEADER VARCHAR(8000) DECLARE TNAMES_CURSOR CURSOR FOR SELECT [name] from [sys].[tables] OPEN TNAMES_CURSOR FETCH NEXT FROM TNAMES_CURSOR INTO @TABLENAME WHILE (@@FETCH_STATUS <> -1) BEGIN IF (@@FETCH_STATUS <> -2) BEGIN SELECT @TABLENAME_HEADER = 'ALTER TABLE ' + RTRIM(UPPER(@TABLENAME)) + ' NOCHECK CONSTRAINT ALL;' --Alterar o NOCHECK para CHECK para depois habilitar as constraints PRINT @TABLENAME_HEADER END FETCH NEXT FROM TNAMES_CURSOR INTO @TABLENAME END SELECT @TABLENAME_HEADER = '--************* Fim das Tabelas *************--' PRINT @TABLENAME_HEADER PRINT ' ' DEALLOCATE TNAMES_CURSOR ``` 3. Copie o resultado e cole em uma janela de Nova Consulta e execute (na nova base de dados) usando o bando de dados **TOTVS Fluig Plataforma**. - Exclua o índice **CENTRAL\_TC** que fica na tabela **TAR\_CTRAL**. Para excluir o índice pelo SQL Studio: 1. Abra o **SQL Server Management Studio (SSMS)**. 2. Conecte-se ao servidor de banco de dados. 3. No painel do **Object Explorer**, localize a base de dados onde a tabela está armazenada. 4. Expanda a base de dados e navegue até a tabela chamada **TAL\_CTRAL**. 5. Clique com o botão direito na tabela **TAL\_CTRAL** e selecione a opção **Indexes**. 6. A lista de índices associados à tabela será exibida. 7. Identifique o índice **CENTRAL\_TC**. 8. Clique com o botão direito sobre o índice selecionado e escolha a opção **Delete**. 9. Confirme a exclusão para apagar o índice atrelado à tabela. - Realize a importação dos dados a partir da base de dados antiga, com um assistente de importação e exportação de dados, por exemplo. Para o SGBD Microsoft SQL Server utilize o procedimento: 1. Clique com o botão direito do mouse sobre a nova base de dados. 2. No menu suspenso selecione a opção **Tarefas > Importar Dados...** 3. Na tela de apresentação do Assistente de Importação e Exportação do SQL Server clique no botão **Avançar >**. 4. No campo **Fonte** de dados selecione a opção **SQL Server Native Client** (ao final é exibido o número da versão, utilize a mesma equivalente à versão do serviço de banco de dados). 5. No campo **Nome** do servidor indique (digite ou selecione na caixa suspensa) o servidor e instância que possui a base de dados anterior (que deverá ser compatibilizada / normalizada). 6. No grupo **Autenticação** utilize o método que permite acesso a todos os dados desta base de dados anterior. É recomendado o uso de um usuário com permissão de **db\_owner**. 7. Selecione ou digite, no campo **Banco de dados**, a base antiga e clique no botão **Avançar >**. 8. Na tela com título (para) **Escolher um Destino** devem vir preenchidos os campos com informações de acesso a esta nova base de dados. Se as informações estiverem incorretas ou incompletas, corrija-as, e clique no botão **Avançar >**. 9. A seguir na tela com título **Especificar Cópia** ou **Consulta de Tabela** selecione a opção **Copiar** dados de uma ou mais tabelas ou exibições e clique no botão **Avançar >**. 10. Na tela de título **Selecionar Tabelas** e **Exibições de Origem**, clique na primeira caixa de seleção que está nos títulos da listagem de **Tabelas e exibições**. 11. Com todos selecionados clique no botão **Editar Mapeamentos...** 12. Na caixa **Configurações de Transferência**marque a caixa de seleção **Habilitar inserção de identidade** e, então, no botão OK. Atenção! Não deixe de marcar esta opção para que não ocorram falhas na cópia dos dados. 13. Retornando à janela anterior, **Selecionar Tabelas** e **Exibições de Origem**, clique no botão **Avançar >**. 14. Na tela com título **Revisar Mapeamento** de **Tipo de Dados** clique no botão **Avançar**. 15. Na tela com título **Executar Pacote**marque a caixa de seleção **Executar imediatamente** e clique no botão **Avançar >**. 16. Na tela com título **Concluir Assistente**, após revisar as ações clique no botão **Avançar**. 17. Na tela a seguir de execução das ações ao final deve ser exibida a informação de que a importação foi realizada com sucesso. 18. Execute o *script* para habilitar as *constraints* que foram desativadas no **Passo 02**alterando de **NOCHECK** para **CHECK**. - Conferir procedimentos para o serviço/instância do SGBD Microsoft SQL Server, descritos na página [Configuração do banco de dados SQL Server](https://tdn.totvs.com/pages/viewpage.action?pageId=73078837), a partir da sessão **Configuração do banco**. - As configurações de agrupamento de caracteres (*Collate/Collation*) das bases de dados podem ser consultadas utilizando a instrução: ``` SELECT [name] , [is_read_committed_snapshot_on] , [collation_name] , suser_sname([owner_sid]) as 'owner' FROM [sys].[databases] WHERE [name] LIKE 'fluig%'; ``` IMPORTANTE - Verificar o nome do proprietário (owner) do novo banco criado. Deverá ser o mesmo usuário a ser informado na instalação do **Fluig.** - Verificar o repasse das permissões de acesso aos devidos usuários na nova base de dados. Estas podem ter sido perdidas. - Instalar a **versão 1.5.13 (Última EP)** do **Fluig** e configurar para apontar para esta base de dados (**fluig**). - Inicializar o serviço **Fluig**, e acompanhar o LOG, para se certificar de que toda a inicialização foi bem sucedida, sem erros graves, como falha na conexão com o SGBD. - Retornar ao processo de conversão **TOTVS ECM 3.00 para TOTVS Fluig Plataforma** se for este o caso, ou então, realizar as validações desejadas e uso da nova instalação.