

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Convertendo o SQL Server em MySQL
<a name="CHAP_Source.SQLServer.ToMySQL"></a>

Para emular funções de banco de dados do Microsoft SQL Server em seu código MySQL convertido, use o pacote de extensão SQL Server para MySQL em AWS SCT. Para obter mais informações sobre pacotes de extensão, consulte [Usando pacotes de extensão com AWS Schema Conversion Tool](CHAP_ExtensionPack.md). 

**Topics**
+ [Privilégios do MySQL como um banco de dados de destino](#CHAP_Source.SQLServer.ToMySQL.ConfigureTarget)
+ [Configurações de conversão do SQL Server para MySQL](#CHAP_Source.SQLServer.ToMySQL.ConversionSettings)
+ [Considerações sobre a migração](#CHAP_Source.SQLServer.ToMySQL.MigrationConsiderations)

## Privilégios do MySQL como um banco de dados de destino
<a name="CHAP_Source.SQLServer.ToMySQL.ConfigureTarget"></a>

Os privilégios obrigatórios para MySQL como destino são listados a seguir:
+ CREATE ON \*.\*
+ ALTER ON \*.\*
+ DROP ON \*.\*
+ INDEX ON \*.\*
+ REFERENCES ON \*.\*
+ SELECT ON \*.\*
+ CREATE VIEW ON \*.\*
+ SHOW VIEW ON \*.\*
+ TRIGGER ON \*.\*
+ CREATE ROUTINE ON \*.\*
+ ALTER ROUTINE ON \*.\*
+ EXECUTE ON \*.\*
+ INSIRA, ATUALIZE EM AWS\_SQLSERVER \_EXT. \*
+ INSIRA, ATUALIZE E EXCLUA EM AWS\_SQLSERVER \_EXT\_DATA. \*
+ CRIE TABELAS TEMPORÁRIAS EM AWS\_SQLSERVER \_EXT\_DATA. \*

É possível utilizar o exemplo de código a seguir para criar um usuário do banco de dados e conceder os privilégios.

```
CREATE USER '{{user_name}}' IDENTIFIED BY '{{your_password}}';
GRANT CREATE ON *.* TO '{{user_name}}';
GRANT ALTER ON *.* TO '{{user_name}}';
GRANT DROP ON *.* TO '{{user_name}}';
GRANT INDEX ON *.* TO '{{user_name}}';
GRANT REFERENCES ON *.* TO '{{user_name}}';
GRANT SELECT ON *.* TO '{{user_name}}';
GRANT CREATE VIEW ON *.* TO '{{user_name}}';
GRANT SHOW VIEW ON *.* TO '{{user_name}}';
GRANT TRIGGER ON *.* TO '{{user_name}}';
GRANT CREATE ROUTINE ON *.* TO '{{user_name}}';
GRANT ALTER ROUTINE ON *.* TO '{{user_name}}';
GRANT EXECUTE ON *.* TO '{{user_name}}';
GRANT INSERT, UPDATE ON AWS_SQLSERVER_EXT.* TO '{{user_name}}';
GRANT INSERT, UPDATE, DELETE ON AWS_SQLSERVER_EXT_DATA.* TO '{{user_name}}';
GRANT CREATE TEMPORARY TABLES ON AWS_SQLSERVER_EXT_DATA.* TO '{{user_name}}';
```

No exemplo anterior, {{user\_name}} substitua pelo nome do seu usuário. Em seguida, {{your\_password}} substitua por uma senha segura.

Se você usar um banco de dados MySQL versão 5.7 ou inferior como destino, execute o comando a seguir. Para bancos de dados MySQL versão 8.0 e superior, esse comando está obsoleto.

```
GRANT SELECT ON mysql.proc TO '{{user_name}}';
```

Para usar o Amazon RDS para MySQL ou o Aurora MySQL como destino, defina o parâmetro `lower_case_table_names` como `1`. Esse valor significa que o servidor MySQL manipula identificadores de nomes de objetos como tabelas, índices, acionadores e bancos de dados sem distinção entre maiúsculas e minúsculas. Se você ativou o registro binário em sua instância de destino, defina o parâmetro `log_bin_trust_function_creators` como `1`. Nesse caso, você não precisa usar as características `DETERMINISTIC`, `READS SQL DATA` ou `NO SQL` para criar funções armazenadas. Para configurar esses parâmetros, crie um novo grupo de parâmetros de banco de dados ou modifique um grupo de parâmetros de banco de dados existente.

## Configurações de conversão do SQL Server para MySQL
<a name="CHAP_Source.SQLServer.ToMySQL.ConversionSettings"></a>

Para editar as configurações de conversão do SQL Server para MySQL, AWS SCT escolha **Configurações** e, em seguida, escolha Configurações **de conversão**. Na lista superior, escolha **SQL Server** e, em seguida, escolha **SQL Server: MySQL**. A AWS SCT exibe todas as configurações disponíveis para conversão de SQL Server para MySQL.

As configurações de conversão do SQL Server para MySQL AWS SCT incluem opções para o seguinte:
+ Para limitar o número de comentários com itens de ação no código convertido.

  Em **Adicionar comentários no código convertido para os itens de ação de severidade selecionada e superior**, escolha a severidade dos itens de ação. AWS SCT adiciona comentários no código convertido para itens de ação da severidade selecionada e superior.

  Por exemplo, para minimizar o número de comentários em seu código convertido, escolha **Somente erros**. Para incluir comentários para todos os itens de ação em seu código convertido, escolha **Todas as mensagens**.
+ Para permitir que seu banco de dados SQL Server de origem armazene a saída de `EXEC` em uma tabela. AWS SCT cria tabelas temporárias e um procedimento adicional para emular esse recurso. Para usar essa emulação, selecione **Criar rotinas adicionais para lidar com conjuntos de dados abertos**.

## Considerações sobre a migração
<a name="CHAP_Source.SQLServer.ToMySQL.MigrationConsiderations"></a>

Há alguns aspectos a serem considerados ao migrar um esquema do SQL Server para o MySQL:
+ O MySQL não é compatível com a instrução `MERGE`. No entanto, AWS SCT pode emular a `MERGE` declaração durante a conversão usando a `INSERT ON DUPLICATE KEY` cláusula e as `UPDATE FROM and DELETE FROM` declarações.

  Para emulação correta usando `INSERT ON DUPLICATE KEY`, é necessário que haja uma restrição ou chave primária no banco de dados MySQL de destino.
+ Uma instrução `GOTO` e um rótulo podem ser usados para alterar a ordem em que as instruções são executadas. Todas as instruções Transact-SQL que seguem a instrução `GOTO` são ignoradas, e o processamento continua no rótulo. As instruções `GOTO` e os rótulos podem ser usados em qualquer lugar em um procedimento, lote ou bloco de instruções. Você também pode aninhar instruções `GOTO`.

  O MySQL não usa instruções `GOTO`. Quando AWS SCT converte o código que contém uma `GOTO` instrução, ele converte a instrução para usar uma instrução `BEGIN…END` ou`LOOP…END LOOP`. Você pode encontrar exemplos de como AWS SCT converte `GOTO` declarações na tabela a seguir.  
****    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/SchemaConversionTool/latest/userguide/CHAP_Source.SQLServer.ToMySQL.html)
+ O MySQL não oferece suporte a funções com valor de tabela de várias instruções. AWS SCT simula funções com valor de tabela durante uma conversão criando tabelas temporárias e reescrevendo instruções para usar essas tabelas temporárias.