

# Conexões do Azure SQL
<a name="aws-glue-programming-etl-connect-azuresql-home"></a>

O AWS Glue para Spark pode ser usado para ler e gravar em tabelas em instâncias gerenciadas do Azure SQL no AWS Glue 4.0 e versões posteriores. Você pode definir o que ler no Azure SQL com uma consulta SQL. Conecte-se ao Azure SQL usando credenciais de usuário e senha armazenadas no AWS Secrets Manager via conexão do AWS Glue.

Para obter mais informações sobre o Azure SQL, consulte a [Documentação do Azure SQL](https://azure.microsoft.com/en-us/products/azure-sql).

## Configurar conexões do Azure SQL
<a name="aws-glue-programming-etl-connect-azuresql-configure"></a>

Para se conectar ao Azure SQL via AWS Glue, será necessário criar e armazenar sua credenciais do Azure SQL em um segredo do AWS Secrets Manager e, em seguida, associar esse segredo a uma conexão do Azure SQL AWS Glue.

**Para configurar uma conexão com o Azure SQL:**

1. No AWS Secrets Manager, crie um segredo usando suas credenciais do Azure SQL. Para criar um segredo no Secrets Manager, siga o tutorial disponível em [Criar uma AWS Secrets Manager segredo ](https://docs.aws.amazon.com//secretsmanager/latest/userguide/create_secret.html) na documentação do AWS Secrets Manager. Depois de criar o segredo, guarde o nome secreto, *SecretName*, para a próxima etapa. 
   + Ao selecionar **Pares chave/valor**, crie um par para a chave `user` com o valor *azuresqlUsername*.
   + Ao selecionar **Pares chave/valor**, crie um par para a chave `password` com o valor *azuresqlPassword*.

1. No console do AWS Glue, crie uma conexão seguindo as etapas em [Adicionar uma conexão do AWS Glue](console-connections.md). Depois de criar a conexão, guarde o nome da conexão, *connectionName*, para uso futuro no AWS Glue. 
   + Ao selecionar um **Tipo de conexão**, selecione Azure SQL.
   + Ao fornecer o **URL do Azure SQL**, forneça um URL de endpoint do JDBC.

      Essa lista deve estar no seguinte formato: `jdbc:sqlserver://databaseServerName:databasePort;databaseName=azuresqlDBname;`.

     O AWS Glue requer as seguintes propriedades de URL: 
     + `databaseName`: um banco de dados padrão no Azure SQL ao qual se conectar.

     Para obter mais informações sobre URLs de JDBC para instâncias gerenciadas Azure SQL, consulte a [Documentação da Microsoft](https://learn.microsoft.com/en-us/sql/connect/jdbc/building-the-connection-url?view=azuresqldb-mi-current).
   + Ao selecionar um **Segredo da AWS**, forneça o *secretName*.

Depois de criar uma conexão AWS Glue Azure SQL, siga estas etapas antes de executar seu trabalho do AWS Glue:
+ Conceda ao perfil do IAM associada ao seu trabalho do AWS Glue permissão para ler *secretName*.
+ Na configuração do trabalho do AWS Glue, forneça *connectionName* como uma **conexão de rede adicional**.

## Ler de tabelas SQL do Azure
<a name="aws-glue-programming-etl-connect-azuresql-read"></a>

**Pré-requisitos:** 
+ Uma tabela do Azure SQL da qual você deseja ler. Você precisará de informações de identificação para a tabela, *databaseName* e *tableIdentifier*.

  Uma tabela do Azure SQL é identificada por seu banco de dados, esquema e nome da tabela. É necessário fornecer o nome do banco de dados e o nome da tabela ao se conectar ao Azure SQL. Você também deverá fornecer o esquema se ele não for o padrão, "public". O banco de dados é fornecido por meio de uma propriedade de URL em *connectionName*, esquema e nome da tabela via `dbtable`.
+ Uma conexão AWS Glue Azure SQL configurada para fornecer informações de autenticação. Conclua as etapas do procedimento anterior, *Para configurar uma conexão com o Azure SQL* para configurar suas informações de autenticação. Você precisará do nome da conexão AWS Glue, *ConnectionName*. 

Por exemplo: 

```
azuresql_read_table = glueContext.create_dynamic_frame.from_options(
    connection_type="azuresql",
    connection_options={
        "connectionName": "connectionName",
        "dbtable": "tableIdentifier"
    }
)
```

Você também pode fornecer uma consulta SQL SELECT para filtrar os resultados retornados ao seu DynamicFrame. Você precisará configurar `query`.

Por exemplo:

```
azuresql_read_query = glueContext.create_dynamic_frame.from_options(
    connection_type="azuresql",
    connection_options={
        "connectionName": "connectionName",
        "query": "query"
    }
)
```

## Escrevendo em tabelas do Azure SQL
<a name="aws-glue-programming-etl-connect-azuresql-write"></a>

Este exemplo escreve informações de um DynamicFrame existente, *dynamicFrame*, no Azure SQL. Se a tabela já contiver informações, o AWS Glue anexará dados do seu DynamicFrame.

**Pré-requisitos:** 
+ Uma tabela do Azure SQL em que você deseja escrever. Você precisará de informações de identificação para a tabela, *databaseName* e *tableIdentifier*.

  Uma tabela do Azure SQL é identificada por seu banco de dados, esquema e nome da tabela. É necessário fornecer o nome do banco de dados e o nome da tabela ao se conectar ao Azure SQL. Você também deverá fornecer o esquema se ele não for o padrão, "public". O banco de dados é fornecido por meio de uma propriedade de URL em *connectionName*, esquema e nome da tabela via `dbtable`.
+ Informações de autenticação do Azure SQL. Conclua as etapas do procedimento anterior, *Para configurar uma conexão com o Azure SQL* para configurar suas informações de autenticação. Você precisará do nome da conexão AWS Glue, *ConnectionName*. 

Por exemplo: 

```
azuresql_write = glueContext.write_dynamic_frame.from_options(
    connection_type="azuresql",
    connection_options={
        "connectionName": "connectionName",
        "dbtable": "tableIdentifier"
    }
)
```

## Referência de opções de conexão do Azure SQL
<a name="aws-glue-programming-etl-connect-azuresql-reference"></a>
+ `connectionName` — Obrigatório. Usado para leitura/gravação. O nome de uma conexão AWS Glue Azure SQL configurada para fornecer informações de autenticação e localização da rede ao seu método de conexão.
+ `databaseName`: usado para leitura/gravação. Valores válidos: nomes de bancos de dados do Azure SQL. O nome do banco de dados do Azure SQL ao qual conectar.
+ `dbtable`: necessário para escrever, obrigatório para leitura, a menos que `query` seja fornecido. Usado para leitura/gravação. Valores válidos: nomes de tabelas do Azure SQL ou combinações de nomes de esquema/tabela separados por pontos. Usado para especificar a tabela e o esquema que identificam a tabela à qual conectar. O esquema padrão é "public". Se sua tabela estiver em um esquema não padrão, forneça essas informações no formulário `schemaName.tableName`.
+ `query` - Usado para leitura. Uma consulta SQL SELECT que define o que deve ser recuperado na leitura do Azure SQL. Para obter mais informações, consulte a [Documentação da Microsoft](https://learn.microsoft.com/en-us/sql/t-sql/queries/select-transact-sql?view=azuresqldb-mi-current).