

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 \$1.\$1
+ ALTER ON \$1.\$1
+ DROP ON \$1.\$1
+ INDEX ON \$1.\$1
+ REFERENCES ON \$1.\$1
+ SELECT ON \$1.\$1
+ CREATE VIEW ON \$1.\$1
+ SHOW VIEW ON \$1.\$1
+ TRIGGER ON \$1.\$1
+ CREATE ROUTINE ON \$1.\$1
+ ALTER ROUTINE ON \$1.\$1
+ EXECUTE ON \$1.\$1
+ INSIRA, ATUALIZE EM AWS\$1SQLSERVER \$1EXT. \$1
+ INSIRA, ATUALIZE E EXCLUA EM AWS\$1SQLSERVER \$1EXT\$1DATA. \$1
+ CRIE TABELAS TEMPORÁRIAS EM AWS\$1SQLSERVER \$1EXT\$1DATA. \$1

É 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\$1name* substitua pelo nome do seu usuário. Em seguida, *your\$1password* 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.