Copiar e transformar dados no Azure Synapse Analytics usando Azure Data FactoryCopy and transform data in Azure Synapse Analytics by using Azure Data Factory

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Este artigo descreve como usar a atividade de cópia no Azure Data Factory para copiar dados de e para o Azure Synapse Analytics e usar o Fluxo de Dados para transformar dados no Azure Data Lake Storage Gen2.This article outlines how to use Copy Activity in Azure Data Factory to copy data from and to Azure Synapse Analytics, and use Data Flow to transform data in Azure Data Lake Storage Gen2. Para saber mais sobre o Azure Data Factory, leia as artigo introdutório.To learn about Azure Data Factory, read the introductory article.

Funcionalidades com suporteSupported capabilities

Este conector do Azure Synapse Analytics é compatível com as seguintes atividades:This Azure Synapse Analytics connector is supported for the following activities:

Para a atividade de cópia, este conector do Azure Synapse Analytics é compatível com estas funções:For Copy activity, this Azure Synapse Analytics connector supports these functions:

  • Copie os dados usando a autenticação de token do Aplicativo Azure AD (Azure Active Directory) e autenticação do SQL com uma entidade de serviço ou identidades gerenciadas para recursos do Azure.Copy data by using SQL authentication and Azure Active Directory (Azure AD) Application token authentication with a service principal or managed identities for Azure resources.
  • Como uma fonte, recupere dados usando uma consulta SQL ou procedimento armazenado.As a source, retrieve data by using a SQL query or stored procedure. Você também pode optar por copiar paralelamente de uma fonte do Azure Synapse Analytics, consulte a seção cópia paralela do Azure Synapse Analytics para obter detalhes.You can also choose to parallel copy from an Azure Synapse Analytics source, see the Parallel copy from Azure Synapse Analytics section for details.
  • Como um coletor, carregue dados usando o polybase ou a instrução de cópia ou BULK INSERT.As a sink, load data by using PolyBase or COPY statement or bulk insert. Recomendamos o polybase ou a instrução de cópia para melhor desempenho de cópia.We recommend PolyBase or COPY statement for better copy performance. O conector também dá suporte à criação automática da tabela de destino se não existir com base no esquema de origem.The connector also supports automatically creating destination table if not exists based on the source schema.

Importante

Se você copiar dados usando Azure Data Factory Integration Runtime, configure uma regra de firewall no nível de servidor para que os serviços do Azure possam acessar o SQL Server lógico.If you copy data by using Azure Data Factory Integration Runtime, configure a server-level firewall rule so that Azure services can access the logical SQL server. Se você copiar dados usando um tempo de execução de integração auto-hospedado, configure o firewall para permitir o intervalo de IP apropriado.If you copy data by using a self-hosted integration runtime, configure the firewall to allow the appropriate IP range. Esse intervalo inclui o IP do computador usado para se conectar ao Azure Synapse Analytics.This range includes the machine's IP that is used to connect to Azure Synapse Analytics.

IntroduçãoGet started

Dica

Para obter o melhor desempenho, use o polybase ou a instrução de cópia para carregar dados no Azure Synapse Analytics.To achieve best performance, use PolyBase or COPY statement to load data into Azure Synapse Analytics. O uso do polybase para carregar dados no Azure Synapse Analytics e use a instrução Copy para carregar dados em seções do Azure Synapse Analytics têm detalhes.The Use PolyBase to load data into Azure Synapse Analytics and Use COPY statement to load data into Azure Synapse Analytics sections have details. Para ver um passo a passo com um caso de uso, confira Carregar 1 TB no Azure Synapse Analytics em menos de 15 minutos com o Azure Data Factory.For a walkthrough with a use case, see Load 1 TB into Azure Synapse Analytics under 15 minutes with Azure Data Factory.

Para executar a atividade de Cópia com um pipeline, será possível usar as ferramentas ou os SDKs abaixo:To perform the Copy activity with a pipeline, you can use one of the following tools or SDKs:

As seções a seguir fornecem detalhes sobre propriedades que definem entidades do Data Factory específicas para um conector do Azure Synapse Analytics.The following sections provide details about properties that define Data Factory entities specific to an Azure Synapse Analytics connector.

Propriedades do serviço vinculadoLinked service properties

As seguintes propriedades são compatíveis com um serviço vinculado do Azure Synapse Analytics:The following properties are supported for an Azure Synapse Analytics linked service:

PropriedadeProperty DescriçãoDescription ObrigatórioRequired
typetype A propriedade type deve ser definida como AzureSqlDW.The type property must be set to AzureSqlDW. SimYes
connectionStringconnectionString Especifique as informações necessárias para conectar-se à instância do Azure Synapse Analytics para a propriedade connectionString.Specify the information needed to connect to the Azure Synapse Analytics instance for the connectionString property.
Marque esse campo como SecureString para armazená-lo com segurança no Data Factory.Mark this field as a SecureString to store it securely in Data Factory. Você também pode colocar uma senha/chave da entidade de serviço no Azure Key Vault e se sua autenticação do SQL efetua pull da configuração da password da cadeia de conexão.You can also put password/service principal key in Azure Key Vault,and if it's SQL authentication pull the password configuration out of the connection string. Veja o exemplo de JSON abaixo da tabela e o artigo Armazenar credenciais no Azure Key Vault que fornece mais detalhes.See the JSON example below the table and Store credentials in Azure Key Vault article with more details.
SimYes
servicePrincipalIdservicePrincipalId Especifique a ID do cliente do aplicativo.Specify the application's client ID. Sim, quando você usa a autenticação do Azure AD com uma entidade de serviço.Yes, when you use Azure AD authentication with a service principal.
servicePrincipalKeyservicePrincipalKey Especifique a chave do aplicativo.Specify the application's key. Marque este campo como uma SecureString para armazená-la com segurança no Data Factory ou faça referência a um segredo armazenado no Azure Key Vault.Mark this field as a SecureString to store it securely in Data Factory, or reference a secret stored in Azure Key Vault. Sim, quando você usa a autenticação do Azure AD com uma entidade de serviço.Yes, when you use Azure AD authentication with a service principal.
locatáriotenant Especifique as informações de locatário (domínio nome ou ID do Locatário) em que o aplicativo reside.Specify the tenant information (domain name or tenant ID) under which your application resides. É possível recuperá-lo focalizando o canto superior direito do portal do Azure.You can retrieve it by hovering the mouse in the top-right corner of the Azure portal. Sim, quando você usa a autenticação do Azure AD com uma entidade de serviço.Yes, when you use Azure AD authentication with a service principal.
azureCloudTypeazureCloudType Para autenticação de entidade de serviço, especifique o tipo de ambiente de nuvem do Azure no qual seu aplicativo do Azure AD está registrado.For service principal authentication, specify the type of Azure cloud environment to which your Azure AD application is registered.
Os valores permitidos são AzurePublic, AzureChina, AzureUsGovernment e AzureGermany.Allowed values are AzurePublic, AzureChina, AzureUsGovernment, and AzureGermany. Por padrão, o ambiente de nuvem do data factory é usado.By default, the data factory's cloud environment is used.
NãoNo
connectViaconnectVia O runtime de integração a ser usado para se conectar ao armazenamento de dados.The integration runtime to be used to connect to the data store. Você pode usar o Azure Integration runtime ou um runtime de integração auto-hospedada (se o seu armazenamento de dados estiver localizado em uma rede privada).You can use Azure Integration Runtime or a self-hosted integration runtime (if your data store is located in a private network). Se não for especificado, ele usa o Integration Runtime padrão do Azure.If not specified, it uses the default Azure Integration Runtime. NãoNo

Para diferentes tipos de autenticação, consulte as seções a seguir sobre pré-requisitos e amostras JSON, respectivamente:For different authentication types, refer to the following sections on prerequisites and JSON samples, respectively:

Dica

Se ocorrer erro com código de erro como "UserErrorFailedToConnectToSqlServer" e mensagem como "O limite da sessão para o banco de dados é XXX e foi atingido.", adicione Pooling=false à cadeia de conexão e tente novamente.If you hit error with error code as "UserErrorFailedToConnectToSqlServer" and message like "The session limit for the database is XXX and has been reached.", add Pooling=false to your connection string and try again.

Autenticação SQLSQL authentication

Exemplo de serviço vinculado que usa autenticação SQLLinked service example that uses SQL authentication

{
    "name": "AzureSqlDWLinkedService",
    "properties": {
        "type": "AzureSqlDW",
        "typeProperties": {
            "connectionString": "Server=tcp:<servername>.database.windows.net,1433;Database=<databasename>;User ID=<username>@<servername>;Password=<password>;Trusted_Connection=False;Encrypt=True;Connection Timeout=30"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Senha no Azure Key Vault:Password in Azure Key Vault:

{
    "name": "AzureSqlDWLinkedService",
    "properties": {
        "type": "AzureSqlDW",
        "typeProperties": {
            "connectionString": "Server=tcp:<servername>.database.windows.net,1433;Database=<databasename>;User ID=<username>@<servername>;Trusted_Connection=False;Encrypt=True;Connection Timeout=30",
            "password": {
                "type": "AzureKeyVaultSecret",
                "store": {
                    "referenceName": "<Azure Key Vault linked service name>",
                    "type": "LinkedServiceReference"
                },
                "secretName": "<secretName>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Autenticação de entidade de serviçoService principal authentication

Para usar a autenticação de token de aplicativo do Azure AD com base em entidade de serviço, siga estas etapas:To use service principal-based Azure AD application token authentication, follow these steps:

  1. Crie um aplicativo do Azure Active Directory no portal do Azure.Create an Azure Active Directory application from the Azure portal. Anote o nome do aplicativo e os seguintes valores que definem o serviço vinculado:Make note of the application name and the following values that define the linked service:

    • ID do aplicativoApplication ID
    • Chave do aplicativoApplication key
    • ID do locatárioTenant ID
  2. Provisione um administrador de Azure Active Directory para seu servidor no portal do Azure se ainda não tiver feito isso.Provision an Azure Active Directory administrator for your server in the Azure portal if you haven't already done so. O administrador do Azure AD pode ser um usuário ou um grupo do Azure AD.The Azure AD administrator can be an Azure AD user or Azure AD group. Se você conceder uma função de administrador ao grupo com a identidade gerenciada, ignore as etapas 3 e 4.If you grant the group with managed identity an admin role, skip steps 3 and 4. O administrador terá acesso completo ao banco de dados.The administrator will have full access to the database.

  3. Crie usuários de banco de dados contidos para o diretor de serviços.Create contained database users for the service principal. Conecte-se ao data warehouse de ou para o qual você deseja copiar dados usando ferramentas como SSMS, com uma identidade do Azure AD que tenha pelo menos a permissão ALTER ANY USER.Connect to the data warehouse from or to which you want to copy data by using tools like SSMS, with an Azure AD identity that has at least ALTER ANY USER permission. Execute o seguinte T-SQL:Run the following T-SQL:

    CREATE USER [your application name] FROM EXTERNAL PROVIDER;
    
  4. Conceda ao principal de serviço as permissões necessárias, como faria normalmente para usuários do SQL ou outros.Grant the service principal needed permissions as you normally do for SQL users or others. Execute o código a seguir ou veja mais opções aqui.Run the following code, or refer to more options here. Se você quiser usar o PolyBase para carregar os dados, aprenda a permissão de banco de dados necessária.If you want to use PolyBase to load the data, learn the required database permission.

    EXEC sp_addrolemember db_owner, [your application name];
    
  5. Configure um serviço vinculado do Azure Synapse Analytics no Azure Data Factory.Configure an Azure Synapse Analytics linked service in Azure Data Factory.

Exemplo de serviço vinculado que usa autenticação principal de serviçoLinked service example that uses service principal authentication

{
    "name": "AzureSqlDWLinkedService",
    "properties": {
        "type": "AzureSqlDW",
        "typeProperties": {
            "connectionString": "Server=tcp:<servername>.database.windows.net,1433;Database=<databasename>;Connection Timeout=30",
            "servicePrincipalId": "<service principal id>",
            "servicePrincipalKey": {
                "type": "SecureString",
                "value": "<service principal key>"
            },
            "tenant": "<tenant info, e.g. microsoft.onmicrosoft.com>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Identidades gerenciadas para autenticação de recursos do AzureManaged identities for Azure resources authentication

Um data factory pode ser associado a uma identidade gerenciada para recursos do Azure, que representa o factory específico.A data factory can be associated with a managed identity for Azure resources that represents the specific factory. Você pode usar essa identidade gerenciada para a autenticação do Azure Synapse Analytics.You can use this managed identity for Azure Synapse Analytics authentication. A fábrica designada pode acessar e copiar dados de ou para seu data warehouse usando essa identidade.The designated factory can access and copy data from or to your data warehouse by using this identity.

Para usar a autenticação de identidade gerenciada, siga estas etapas:To use managed identity authentication, follow these steps:

  1. Provisione um administrador de Azure Active Directory para seu servidor no portal do Azure se ainda não tiver feito isso.Provision an Azure Active Directory administrator for your server on the Azure portal if you haven't already done so. O administrador do Azure AD pode ser um usuário ou um grupo do Azure AD.The Azure AD administrator can be an Azure AD user or Azure AD group. Se você conceder uma função de administrador ao grupo com a identidade gerenciada, ignore as etapas 3 e 4.If you grant the group with managed identity an admin role, skip steps 3 and 4. O administrador terá acesso completo ao banco de dados.The administrator will have full access to the database.

  2. Criar usuários de banco de dados independente para a identidade gerenciada pelo data factory.Create contained database users for the Data Factory Managed Identity. Conecte-se ao data warehouse de ou para o qual você deseja copiar dados usando ferramentas como SSMS, com uma identidade do Azure AD que tenha pelo menos a permissão ALTER ANY USER.Connect to the data warehouse from or to which you want to copy data by using tools like SSMS, with an Azure AD identity that has at least ALTER ANY USER permission. Execute o seguinte T-SQL.Run the following T-SQL.

    CREATE USER [your Data Factory name] FROM EXTERNAL PROVIDER;
    
  3. Conceda à identidade gerenciada pelo data factory as permissões necessárias, como faria normalmente para usuários do SQL e outros.Grant the Data Factory Managed Identity needed permissions as you normally do for SQL users and others. Execute o código a seguir ou veja mais opções aqui.Run the following code, or refer to more options here. Se você quiser usar o PolyBase para carregar os dados, aprenda a permissão de banco de dados necessária.If you want to use PolyBase to load the data, learn the required database permission.

    EXEC sp_addrolemember db_owner, [your Data Factory name];
    
  4. Configure um serviço vinculado do Azure Synapse Analytics no Azure Data Factory.Configure an Azure Synapse Analytics linked service in Azure Data Factory.

Exemplo:Example:

{
    "name": "AzureSqlDWLinkedService",
    "properties": {
        "type": "AzureSqlDW",
        "typeProperties": {
            "connectionString": "Server=tcp:<servername>.database.windows.net,1433;Database=<databasename>;Connection Timeout=30"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Propriedades do conjunto de dadosDataset properties

Para obter uma lista completa das seções e propriedades disponíveis para definir os conjuntos de dados, confira o artigo sobre Conjuntos de Dados.For a full list of sections and properties available for defining datasets, see the Datasets article.

As seguintes propriedades são compatíveis com um conjunto de dados do Azure Synapse Analytics:The following properties are supported for Azure Synapse Analytics dataset:

PropriedadeProperty DescriçãoDescription ObrigatórioRequired
typetype A propriedade tipo do conjunto de dados deve ser definida como AzureSqlDWTable.The type property of the dataset must be set to AzureSqlDWTable. SimYes
esquemaschema Nome do esquema.Name of the schema. Não para fonte, Sim para o coletorNo for source, Yes for sink
tabelatable Nome da tabela/exibição.Name of the table/view. Não para fonte, Sim para o coletorNo for source, Yes for sink
tableNametableName Nome da tabela/exibição com esquema.Name of the table/view with schema. Essa propriedade é compatível com versões anteriores.This property is supported for backward compatibility. Para uma nova carga de trabalho, use schema e table.For new workload, use schema and table. Não para fonte, Sim para o coletorNo for source, Yes for sink

Exemplo de propriedades do conjunto de dadosDataset properties example

{
    "name": "AzureSQLDWDataset",
    "properties":
    {
        "type": "AzureSqlDWTable",
        "linkedServiceName": {
            "referenceName": "<Azure Synapse Analytics linked service name>",
            "type": "LinkedServiceReference"
        },
        "schema": [ < physical schema, optional, retrievable during authoring > ],
        "typeProperties": {
            "schema": "<schema_name>",
            "table": "<table_name>"
        }
    }
}

Propriedades da Atividade de CópiaCopy Activity properties

Para obter uma lista completa das seções e propriedades disponíveis para definir atividades, confia o artigo Pipelines.For a full list of sections and properties available for defining activities, see the Pipelines article. Esta seção fornece uma lista de propriedades compatíveis com a origem e o coletor do Azure Synapse Analytics.This section provides a list of properties supported by the Azure Synapse Analytics source and sink.

Azure Synapse Analytics como a origemAzure Synapse Analytics as the source

Dica

Para carregar dados do Azure Synapse Analytics com eficiência usando o particionamento de dados, saiba mais em cópia paralela da análise de Synapse do Azure.To load data from Azure Synapse Analytics efficiently by using data partitioning, learn more from Parallel copy from Azure Synapse Analytics.

Para copiar dados do Azure Synapse Analytics, defina a propriedade type na origem da Atividade de Cópia para SqlDWSource.To copy data from Azure Synapse Analytics, set the type property in the Copy Activity source to SqlDWSource. As seguintes propriedades são suportadas na seção source da atividade de cópia:The following properties are supported in the Copy Activity source section:

PropriedadeProperty DescriçãoDescription ObrigatórioRequired
typetype A propriedade tipo da origem da Atividade de Cópia deve ser configurada para SqlDWSource.The type property of the Copy Activity source must be set to SqlDWSource. SimYes
sqlReaderQuerysqlReaderQuery Utiliza a consulta SQL personalizada para ler os dados.Use the custom SQL query to read data. Exemplo: select * from MyTable.Example: select * from MyTable. NãoNo
sqlReaderStoredProcedureNamesqlReaderStoredProcedureName O nome do procedimento armazenado que lê dados da tabela de origem.The name of the stored procedure that reads data from the source table. A última instrução SQL deve ser uma instrução SELECT no procedimento armazenado.The last SQL statement must be a SELECT statement in the stored procedure. NãoNo
storedProcedureParametersstoredProcedureParameters Parâmetros para o procedimento armazenado.Parameters for the stored procedure.
Valores permitidos são pares de nome ou valor.Allowed values are name or value pairs. Nomes e uso de maiúsculas e minúsculas de parâmetros devem corresponder aos nomes e o uso de maiúsculas e minúsculas dos parâmetros do procedimento armazenado.Names and casing of parameters must match the names and casing of the stored procedure parameters.
NãoNo
isolationLevelisolationLevel Especifica o comportamento de bloqueio de transação para a origem do SQL.Specifies the transaction locking behavior for the SQL source. Os valores permitidos são: ReadCommitted, READUNCOMMITTED, REPEATABLEREAD, Serializable, snapshot.The allowed values are: ReadCommitted, ReadUncommitted, RepeatableRead, Serializable, Snapshot. Se não for especificado, o nível de isolamento padrão do banco de dados será usado.If not specified, the database's default isolation level is used. Veja este documento para obter mais detalhes.Refer to this doc for more details. NãoNo
partitionOptionspartitionOptions Especifica as opções de particionamento de dados usadas para carregar dados do Azure Synapse Analytics.Specifies the data partitioning options used to load data from Azure Synapse Analytics.
Os valores permitidos são: None (padrão), PhysicalPartitionsOfTable e DynamicRange.Allowed values are: None (default), PhysicalPartitionsOfTable, and DynamicRange.
Quando uma opção de partição é habilitada (ou seja, não None ), o grau de paralelismo para carregar dados simultaneamente de uma análise de Synapse do Azure é controlado pela parallelCopies configuração na atividade de cópia.When a partition option is enabled (that is, not None), the degree of parallelism to concurrently load data from an Azure Synapse Analytics is controlled by the parallelCopies setting on the copy activity.
NãoNo
partitionSettingspartitionSettings Especifique o grupo de configurações para o particionamento de dados.Specify the group of the settings for data partitioning.
Aplicar quando a opção de partição não estiver None .Apply when the partition option isn't None.
NãoNo
*Em partitionSettings : _*Under partitionSettings: _
partitionColumnNamepartitionColumnName Especifique o nome da coluna de origem _ em inteiro ou data/hora tipo* ( int , smallint , bigint , date , smalldatetime , datetime , datetime2 ou datetimeoffset ) que será usado pelo particionamento de intervalo para cópia paralela.Specify the name of the source column _ in integer or date/datetime type* (int, smallint, bigint, date, smalldatetime, datetime, datetime2, or datetimeoffset) that will be used by range partitioning for parallel copy. Se não for especificado, o índice ou a chave primária da tabela será detectado automaticamente e usado como a coluna de partição.If not specified, the index or the primary key of the table is auto-detected and used as the partition column.
Aplicar quando a opção de partição for DynamicRange.Apply when the partition option is DynamicRange. Se você usar uma consulta para recuperar os dados de origem, conecte-se ?AdfDynamicRangePartitionCondition à cláusula WHERE.If you use a query to retrieve the source data, hook ?AdfDynamicRangePartitionCondition in the WHERE clause. Para obter um exemplo, consulte a seção cópia paralela do banco de dados SQL .For an example, see the Parallel copy from SQL database section.
NãoNo
partitionUpperBoundpartitionUpperBound O valor máximo da coluna de partição para divisão de intervalo de partição.The maximum value of the partition column for partition range splitting. Esse valor é usado para decidir o stride da partição, não para filtrar as linhas na tabela.This value is used to decide the partition stride, not for filtering the rows in table. Todas as linhas da tabela ou do resultado da consulta serão particionadas e copiadas.All rows in the table or query result will be partitioned and copied. Se não for especificado, a atividade de cópia detectará o valor automaticamente.If not specified, copy activity auto detect the value.
Aplicar quando a opção de partição for DynamicRange.Apply when the partition option is DynamicRange. Para obter um exemplo, consulte a seção cópia paralela do banco de dados SQL .For an example, see the Parallel copy from SQL database section.
NãoNo
partitionLowerBoundpartitionLowerBound O valor mínimo da coluna de partição para divisão de intervalo de partição.The minimum value of the partition column for partition range splitting. Esse valor é usado para decidir o stride da partição, não para filtrar as linhas na tabela.This value is used to decide the partition stride, not for filtering the rows in table. Todas as linhas da tabela ou do resultado da consulta serão particionadas e copiadas.All rows in the table or query result will be partitioned and copied. Se não for especificado, a atividade de cópia detectará o valor automaticamente.If not specified, copy activity auto detect the value.
Aplicar quando a opção de partição for DynamicRange.Apply when the partition option is DynamicRange. Para obter um exemplo, consulte a seção cópia paralela do banco de dados SQL .For an example, see the Parallel copy from SQL database section.
NãoNo

Observe o seguinte ponto:Note the following point:

  • Ao usar o procedimento armazenado na origem para recuperar dados, observe que, se o procedimento armazenado for projetado como retornando um esquema diferente quando um valor de parâmetro diferente for passado, você poderá encontrar uma falha ou conferir um resultado inesperado ao importar o esquema da interface do usuário ou ao copiar dados para o SQL Database com a criação automática de tabela.When using stored procedure in source to retrieve data, note if your stored procedure is designed as returning different schema when different parameter value is passed in, you may encounter failure or see unexpected result when importing schema from UI or when copying data to SQL database with auto table creation.

Exemplo: usando a consulta SQLExample: using SQL query

"activities":[
    {
        "name": "CopyFromAzureSQLDW",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Azure Synapse Analytics input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "SqlDWSource",
                "sqlReaderQuery": "SELECT * FROM MyTable"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Exemplo: usando o procedimento armazenadoExample: using stored procedure

"activities":[
    {
        "name": "CopyFromAzureSQLDW",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Azure Synapse Analytics input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "SqlDWSource",
                "sqlReaderStoredProcedureName": "CopyTestSrcStoredProcedureWithParameters",
                "storedProcedureParameters": {
                    "stringData": { "value": "str3" },
                    "identifier": { "value": "$$Text.Format('{0:yyyy}', <datetime parameter>)", "type": "Int"}
                }
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Exemplo de procedimento armazenado:Sample stored procedure:

CREATE PROCEDURE CopyTestSrcStoredProcedureWithParameters
(
    @stringData varchar(20),
    @identifier int
)
AS
SET NOCOUNT ON;
BEGIN
    select *
    from dbo.UnitTestSrcTable
    where dbo.UnitTestSrcTable.stringData != stringData
    and dbo.UnitTestSrcTable.identifier != identifier
END
GO

Azure Synapse Analytics como coletorAzure Synapse Analytics as sink

O Azure Data Factory dá suporte a três maneiras de carregar dados no Azure Synapse Analytics.Azure Data Factory supports three ways to load data into Azure Synapse Analytics.

Opções de cópia do coletor do Azure Synapse Analytics

A maneira mais rápida e escalonável de carregar dados é por meio do PolyBase ou da instrução COPY (versão prévia).The fastest and most scalable way to load data is through PolyBase or the COPY statement (preview).

Para copiar dados para o Azure Synapse Analytics, defina o tipo de coletor na atividade de cópia como SqlDWSink.To copy data to Azure Synapse Analytics, set the sink type in Copy Activity to SqlDWSink. As seguintes propriedades são suportadas na seção Copy Activity sink:The following properties are supported in the Copy Activity sink section:

PropriedadeProperty DescriçãoDescription ObrigatórioRequired
typetype A propriedade tipo do coletor de Atividade de Cópia deve ser definida como SqlDWSink.The type property of the Copy Activity sink must be set to SqlDWSink. SimYes
allowPolyBaseallowPolyBase Indica se o polybase deve ser usado para carregar dados no Azure Synapse Analytics.Indicates whether to use PolyBase to load data into Azure Synapse Analytics. allowCopyCommand e allowPolyBase não podem ser ambos verdadeiros.allowCopyCommand and allowPolyBase cannot be both true.

Confira a seção usar o polybase para carregar dados na análise de Synapse do Azure para obter restrições e detalhes.See Use PolyBase to load data into Azure Synapse Analytics section for constraints and details.

Os valores permitidos são True e False (padrão).Allowed values are True and False (default).
Não.No.
Aplicar ao usar o PolyBase.Apply when using PolyBase.
polyBaseSettingspolyBaseSettings Um grupo de propriedades que pode ser especificado quando a propriedade allowPolybase está definida como true.A group of properties that can be specified when the allowPolybase property is set to true. Não.No.
Aplicar ao usar o PolyBase.Apply when using PolyBase.
allowCopyCommandallowCopyCommand Indica se a instrução de cópia (versão prévia) deve ser usada para carregar dados no Azure Synapse Analytics.Indicates whether to use COPY statement (preview) to load data into Azure Synapse Analytics. allowCopyCommand e allowPolyBase não podem ser ambos verdadeiros.allowCopyCommand and allowPolyBase cannot be both true.

Consulte usar a instrução Copy para carregar dados na seção do Azure Synapse Analytics para obter restrições e detalhes.See Use COPY statement to load data into Azure Synapse Analytics section for constraints and details.

Os valores permitidos são True e False (padrão).Allowed values are True and False (default).
Não.No.
Aplicar ao usar a instrução COPY.Apply when using COPY.
copyCommandSettingscopyCommandSettings Um grupo de propriedades que pode ser especificado quando a propriedade allowCopyCommand está definida como TRUE.A group of properties that can be specified when allowCopyCommand property is set to TRUE. Não.No.
Aplicar ao usar a instrução COPY.Apply when using COPY.
writeBatchSizewriteBatchSize Número de linhas a serem inseridas na tabela SQL por lote.Number of rows to inserts into the SQL table per batch.

O valor permitido é inteiro (número de linhas).The allowed value is integer (number of rows). Por padrão, o Data Factory determina dinamicamente o tamanho do lote apropriado com base no tamanho da linha.By default, Data Factory dynamically determines the appropriate batch size based on the row size.
Não.No.
Aplicar ao usar Bulk Insert.Apply when using bulk insert.
writeBatchTimeoutwriteBatchTimeout Tempo de espera para a operação de inserção em lote ser concluída antes de expirar.Wait time for the batch insert operation to finish before it times out.

O valor permitido é timespan.The allowed value is timespan. Exemplo: "00:30:00" (30 minutos).Example: "00:30:00" (30 minutes).
Não.No.
Aplicar ao usar Bulk Insert.Apply when using bulk insert.
preCopyScriptpreCopyScript Especifique uma consulta SQL para que a atividade de cópia seja executada antes de gravar dados no Azure Synapse Analytics em cada execução.Specify a SQL query for Copy Activity to run before writing data into Azure Synapse Analytics in each run. Use essa propriedade para limpar os dados pré-carregados.Use this property to clean up the preloaded data. NãoNo
tableOptiontableOption Especifica se a tabela do coletor deve ser criada automaticamente se não existir com base no esquema de origem.Specifies whether to automatically create the sink table if not exists based on the source schema. Os valores permitidos são none (padrão) e autoCreate.Allowed values are: none (default), autoCreate. NãoNo
disableMetricsCollectiondisableMetricsCollection O Data Factory coleta métricas como o Azure Synapse Analytics DWUs para otimização e recomendações de desempenho de cópia, o que introduz acesso de BD mestre adicional.Data Factory collects metrics such as Azure Synapse Analytics DWUs for copy performance optimization and recommendations, which introduces additional master DB access. Se você estiver preocupado com esse comportamento, especifique true para desativá-lo.If you are concerned with this behavior, specify true to turn it off. Não (o padrão é false)No (default is false)

Exemplo de coletor de análise do Azure SynapseAzure Synapse Analytics sink example

"sink": {
    "type": "SqlDWSink",
    "allowPolyBase": true,
    "polyBaseSettings":
    {
        "rejectType": "percentage",
        "rejectValue": 10.0,
        "rejectSampleValue": 100,
        "useTypeDefault": true
    }
}

Cópia paralela do Azure Synapse AnalyticsParallel copy from Azure Synapse Analytics

O conector do Azure Synapse Analytics na atividade de cópia fornece particionamento de dados interno para copiar dados em paralelo.The Azure Synapse Analytics connector in copy activity provides built-in data partitioning to copy data in parallel. Você pode encontrar opções de particionamento de dados na guia origem da atividade de cópia.You can find data partitioning options on the Source tab of the copy activity.

Captura de tela das opções de partição

Quando você habilita a cópia particionada, a atividade de cópia executa consultas paralelas em sua origem do Azure Synapse Analytics para carregar dados por partições.When you enable partitioned copy, copy activity runs parallel queries against your Azure Synapse Analytics source to load data by partitions. O grau paralelo é controlado pela configuração do parallelCopies na atividade de cópia.The parallel degree is controlled by the parallelCopies setting on the copy activity. Por exemplo, se você definir parallelCopies como quatro, data Factory gera e executa quatro consultas de maneira simultânea com base na opção de partição e nas configurações especificadas, e cada consulta recupera uma parte dos dados de sua análise de Synapse do Azure.For example, if you set parallelCopies to four, Data Factory concurrently generates and runs four queries based on your specified partition option and settings, and each query retrieves a portion of data from your Azure Synapse Analytics.

É recomendável habilitar a cópia paralela com o particionamento de dados, especialmente quando você carrega grandes quantidades de dados de sua análise de Synapse do Azure.You are suggested to enable parallel copy with data partitioning especially when you load large amount of data from your Azure Synapse Analytics. Veja a seguir as configurações sugeridas para cenários diferentes.The following are suggested configurations for different scenarios. Ao copiar dados para o armazenamento de dados baseado em arquivo, é recomendável gravar em uma pasta como vários arquivos (apenas especifique o nome da pasta). nesse caso, o desempenho é melhor do que gravar em um único arquivo.When copying data into file-based data store, it's recommended to write to a folder as multiple files (only specify folder name), in which case the performance is better than writing to a single file.

CenárioScenario Configurações sugeridasSuggested settings
Carga total de uma tabela grande, com partições físicas.Full load from large table, with physical partitions. Opção de partição: partições físicas da tabela.Partition option: Physical partitions of table.

Durante a execução, Data Factory detecta automaticamente as partições físicas e copia os dados por partições.During execution, Data Factory automatically detects the physical partitions, and copies data by partitions.

Para verificar se a tabela tem uma partição física ou não, você pode fazer referência a essa consulta.To check if your table has physical partition or not, you can refer to this query.
Carga total de uma tabela grande, sem partições físicas, enquanto com uma coluna de número inteiro ou de data e hora para o particionamento de dados.Full load from large table, without physical partitions, while with an integer or datetime column for data partitioning. Opções de partição: partição de intervalo dinâmico.Partition options: Dynamic range partition.
Coluna de partição (opcional): Especifique a coluna usada para particionar dados.Partition column (optional): Specify the column used to partition data. Se não for especificado, a coluna índice ou chave primária será usada.If not specified, the index or primary key column is used.
Limite superior da partição e limite inferior da partição (opcional): especifique se você deseja determinar o stride da partição.Partition upper bound and partition lower bound (optional): Specify if you want to determine the partition stride. Isso não é para filtrar as linhas na tabela, todas as linhas da tabela serão particionadas e copiadas.This is not for filtering the rows in table, all rows in the table will be partitioned and copied. Se não for especificado, a atividade de cópia detectará automaticamente os valores.If not specified, copy activity auto detect the values.

Por exemplo, se a coluna de partição "ID" tiver valores varia de 1 a 100, e você definir o limite inferior como 20 e o limite superior como 80, com cópia paralela como 4, Data Factory recuperará dados por 4 partições-IDs no intervalo <= 20, [21, 50], [51, 80] e >= 81, respectivamente.For example, if your partition column "ID" has values range from 1 to 100, and you set the lower bound as 20 and the upper bound as 80, with parallel copy as 4, Data Factory retrieves data by 4 partitions - IDs in range <=20, [21, 50], [51, 80], and >=81, respectively.
Carregue uma grande quantidade de dados usando uma consulta personalizada, sem partições físicas, enquanto com uma coluna de número inteiro ou data/hora para o particionamento de dados.Load a large amount of data by using a custom query, without physical partitions, while with an integer or date/datetime column for data partitioning. Opções de partição: partição de intervalo dinâmico.Partition options: Dynamic range partition.
Consulta: SELECT * FROM <TableName> WHERE ?AdfDynamicRangePartitionCondition AND <your_additional_where_clause>.Query: SELECT * FROM <TableName> WHERE ?AdfDynamicRangePartitionCondition AND <your_additional_where_clause>.
Coluna de partição: especifique a coluna usada para particionar dados.Partition column: Specify the column used to partition data.
Limite superior da partição e limite inferior da partição (opcional): especifique se você deseja determinar o stride da partição.Partition upper bound and partition lower bound (optional): Specify if you want to determine the partition stride. Isso não é para filtrar as linhas na tabela, todas as linhas no resultado da consulta serão particionadas e copiadas.This is not for filtering the rows in table, all rows in the query result will be partitioned and copied. Se não for especificado, a atividade de cópia detectará o valor automaticamente.If not specified, copy activity auto detect the value.

Durante a execução, Data Factory substitui ?AdfRangePartitionColumnName o nome real da coluna e os intervalos de valores de cada partição e envia ao Azure Synapse Analytics.During execution, Data Factory replaces ?AdfRangePartitionColumnName with the actual column name and value ranges for each partition, and sends to Azure Synapse Analytics.
Por exemplo, se a coluna de partição "ID" tiver valores varia de 1 a 100, e você definir o limite inferior como 20 e o limite superior como 80, com cópia paralela como 4, Data Factory recuperará dados por 4 partições-IDs no intervalo <= 20, [21, 50], [51, 80] e >= 81, respectivamente.For example, if your partition column "ID" has values range from 1 to 100, and you set the lower bound as 20 and the upper bound as 80, with parallel copy as 4, Data Factory retrieves data by 4 partitions- IDs in range <=20, [21, 50], [51, 80], and >=81, respectively.

Aqui estão mais exemplos de consultas para cenários diferentes:Here are more sample queries for different scenarios:
1. consulte a tabela inteira:1. Query the whole table:
SELECT * FROM <TableName> WHERE ?AdfDynamicRangePartitionCondition
2. consulta de uma tabela com seleção de coluna e filtros de cláusula WHERE adicionais:2. Query from a table with column selection and additional where-clause filters:
SELECT <column_list> FROM <TableName> WHERE ?AdfDynamicRangePartitionCondition AND <your_additional_where_clause>
3. consultar com subconsultas:3. Query with subqueries:
SELECT <column_list> FROM (<your_sub_query>) AS T WHERE ?AdfDynamicRangePartitionCondition AND <your_additional_where_clause>
4. consulta com partição na subconsulta:4. Query with partition in subquery:
SELECT <column_list> FROM (SELECT <your_sub_query_column_list> FROM <TableName> WHERE ?AdfDynamicRangePartitionCondition) AS T

Práticas recomendadas para carregar dados com a opção de partição:Best practices to load data with partition option:

  1. Escolha coluna distinta como coluna de partição (como chave primária ou chave exclusiva) para evitar a distorção de dados.Choose distinctive column as partition column (like primary key or unique key) to avoid data skew.
  2. Se a tabela tiver uma partição interna, use a opção de partição "partições físicas da tabela" para obter um melhor desempenho.If the table has built-in partition, use partition option "Physical partitions of table" to get better performance.
  3. Se você usar Azure Integration Runtime para copiar dados, poderá definir "unidades de integração de dados (DIU)" maiores (>4) para utilizar mais recursos de computação.If you use Azure Integration Runtime to copy data, you can set larger "Data Integration Units (DIU)" (>4) to utilize more computing resource. Verifique os cenários aplicáveis ali.Check the applicable scenarios there.
  4. O "grau de paralelismo de cópia" controla os números de partição, definindo esse número muito grande em algum momento que afeta o desempenho, recomenda definir esse número como (DIU ou número de nós de ir de hospedagem interna) * (2 a 4)."Degree of copy parallelism" control the partition numbers, setting this number too large sometime hurts the performance, recommend setting this number as (DIU or number of Self-hosted IR nodes) * (2 to 4).
  5. Observe que o Azure Synapse Analytics pode executar no máximo 32 consultas em um momento, a definição de "grau de paralelismo de cópia" muito grande pode causar um problema de limitação de Synapse.Note Azure Synapse Analytics can execute a maximum of 32 queries at a moment, setting "Degree of copy parallelism" too large may cause Synapse throttling issue.

Exemplo: carregamento completo de uma tabela grande com partições físicasExample: full load from large table with physical partitions

"source": {
    "type": "SqlDWSource",
    "partitionOption": "PhysicalPartitionsOfTable"
}

Exemplo: consulta com a partição do intervalo dinâmicoExample: query with dynamic range partition

"source": {
    "type": "SqlDWSource",
    "query": "SELECT * FROM <TableName> WHERE ?AdfDynamicRangePartitionCondition AND <your_additional_where_clause>",
    "partitionOption": "DynamicRange",
    "partitionSettings": {
        "partitionColumnName": "<partition_column_name>",
        "partitionUpperBound": "<upper_value_of_partition_column (optional) to decide the partition stride, not as data filter>",
        "partitionLowerBound": "<lower_value_of_partition_column (optional) to decide the partition stride, not as data filter>"
    }
}

Exemplo de consulta para verificar a partição físicaSample query to check physical partition

SELECT DISTINCT s.name AS SchemaName, t.name AS TableName, c.name AS ColumnName, CASE WHEN c.name IS NULL THEN 'no' ELSE 'yes' END AS HasPartition
FROM sys.tables AS t
LEFT JOIN sys.objects AS o ON t.object_id = o.object_id
LEFT JOIN sys.schemas AS s ON o.schema_id = s.schema_id
LEFT JOIN sys.indexes AS i ON t.object_id = i.object_id
LEFT JOIN sys.index_columns AS ic ON ic.partition_ordinal > 0 AND ic.index_id = i.index_id AND ic.object_id = t.object_id
LEFT JOIN sys.columns AS c ON c.object_id = ic.object_id AND c.column_id = ic.column_id
LEFT JOIN sys.types AS y ON c.system_type_id = y.system_type_id
WHERE s.name='[your schema]' AND t.name = '[your table name]'

Se a tabela tiver uma partição física, você verá "HasPartition" como "Sim".If the table has physical partition, you would see "HasPartition" as "yes".

Usar o polybase para carregar dados no Azure Synapse AnalyticsUse PolyBase to load data into Azure Synapse Analytics

Usar o PolyBase é uma forma eficiente de carregar uma grande quantidade de dados no Azure Synapse Analytics com taxa de transferência alta.Using PolyBase is an efficient way to load a large amount of data into Azure Synapse Analytics with high throughput. Você verá um grande ganho na taxa de transferência usando PolyBase em vez do mecanismo BULKINSERT padrão.You'll see a large gain in the throughput by using PolyBase instead of the default BULKINSERT mechanism. Para obter um passo a passo com um caso de uso, confira Carregar 1 TB no Azure Synapse Analytics.For a walkthrough with a use case, see Load 1 TB into Azure Synapse Analytics.

  • Se os dados de origem estiverem no blob do Azure, Azure data Lake Storage Gen1 ou Azure data Lake Storage Gen2 e o formato for compatível com o polybase, você poderá usar a atividade de cópia para invocar diretamente o polybase para permitir que o Azure Synapse Analytics receba os dados da origem.If your source data is in Azure Blob, Azure Data Lake Storage Gen1 or Azure Data Lake Storage Gen2, and the format is PolyBase compatible, you can use copy activity to directly invoke PolyBase to let Azure Synapse Analytics pull the data from source. Para detalhes, veja Cópia direta usando PolyBase .For details, see Direct copy by using PolyBase.
  • Se o armazenamento e o formato de dados de origem não forem originalmente suportados pelo PolyBase, use a cópia Staged usando o recurso PolyBase .If your source data store and format isn't originally supported by PolyBase, use the Staged copy by using PolyBase feature instead. O recurso de cópia preparada também oferece melhor rendimento.The staged copy feature also provides you better throughput. Ele converte automaticamente os dados em formato compatível com o polybase, armazena os dados no armazenamento de BLOBs do Azure e, em seguida, chama o polybase para carregar dados no Azure Synapse Analytics.It automatically converts the data into PolyBase-compatible format, stores the data in Azure Blob storage, then calls PolyBase to load data into Azure Synapse Analytics.

Dica

Saiba mais sobre as Melhores práticas para usar o PolyBase.Learn more on Best practices for using PolyBase. Ao usar o polybase com Azure Integration Runtime, DIU (unidades de integração de dados) em vigor para o armazenamento direto ou preparado para o Synapse é sempre 2.When using PolyBase with Azure Integration Runtime, effective Data Integration Units (DIU) for direct or staged storage-to-Synapse is always 2. O ajuste do DIU não afeta o desempenho, já que carregar dados do armazenamento é alimentado pelo mecanismo do Synapse.Tuning the DIU doesn't impact the performance, as loading data from storage is powered by Synapse engine.

As seguintes configurações do PolyBase são compatíveis em polyBaseSettings na atividade de cópia:The following PolyBase settings are supported under polyBaseSettings in copy activity:

PropriedadeProperty DescriçãoDescription ObrigatórioRequired
rejectValuerejectValue Especifica o número ou o percentual de linhas que podem ser rejeitadas antes de a consulta falhar.Specifies the number or percentage of rows that can be rejected before the query fails.

Saiba mais sobre as opções de rejeição do PolyBase na seção Argumentos de CREATE EXTERNAL TABLE (Transact-SQL).Learn more about PolyBase's reject options in the Arguments section of CREATE EXTERNAL TABLE (Transact-SQL).

Os valores permitidos são 0 (padrão), 1, 2 etc.Allowed values are 0 (default), 1, 2, etc.
NãoNo
rejectTyperejectType Especifica se a opção rejectValue é um valor literal ou uma porcentagem.Specifies whether the rejectValue option is a literal value or a percentage.

Os valores permitidos são Valor (padrão) e Porcentagem.Allowed values are Value (default) and Percentage.
NãoNo
rejectSampleValuerejectSampleValue Determina o número de linhas a serem recuperadas antes que o PolyBase recalcule a porcentagem de linhas rejeitadas.Determines the number of rows to retrieve before PolyBase recalculates the percentage of rejected rows.

Os valores permitidos são 1, 2 etc.Allowed values are 1, 2, etc.
Sim, se o rejectType for porcentagem.Yes, if the rejectType is percentage.
useTypeDefaultuseTypeDefault Especifica como tratar valores ausentes em arquivos de texto delimitados quando o PolyBase recuperar dados do arquivo de texto.Specifies how to handle missing values in delimited text files when PolyBase retrieves data from the text file.

Saiba mais sobre essa propriedade na seção Argumentos em CRIAR FORMATO DE ARQUIVO EXTERNO (Transact-SQL).Learn more about this property from the Arguments section in CREATE EXTERNAL FILE FORMAT (Transact-SQL).

Os valores permitidos são True e False (padrão).Allowed values are True and False (default).

NãoNo

Cópia direta usando PolyBaseDirect copy by using PolyBase

O polybase do Azure Synapse Analytics dá suporte direto ao blob do Azure, Azure Data Lake Storage Gen1 e Azure Data Lake Storage Gen2.Azure Synapse Analytics PolyBase directly supports Azure Blob, Azure Data Lake Storage Gen1 and Azure Data Lake Storage Gen2. Se os dados de origem atenderem aos critérios descritos nesta seção, use o PolyBase para copiar diretamente do armazenamento de dados de origem para o Azure Synapse Analytics.If your source data meets the criteria described in this section, use PolyBase to copy directly from the source data store to Azure Synapse Analytics. Caso contrário, use cópia Staged usando PolyBase.Otherwise, use Staged copy by using PolyBase.

Se os requisitos não forem atendidos, o Azure Data Factory verificará as configurações e retornará automaticamente ao mecanismo BULKINSERT para a movimentação de dados.If the requirements aren't met, Azure Data Factory checks the settings and automatically falls back to the BULKINSERT mechanism for the data movement.

  1. O serviço vinculado de origem acompanha os seguintes tipos e métodos de autenticação:The source linked service is with the following types and authentication methods:

    Tipo de armazenamento de dados de origem compatíveisSupported source data store type Tipos de autenticação de origem compatíveisSupported source authentication type
    Blob do AzureAzure Blob Autenticação de chave de conta, autenticação de identidade gerenciadaAccount key authentication, managed identity authentication
    Azure Data Lake Storage Gen1Azure Data Lake Storage Gen1 Autenticação de entidade de serviçoService principal authentication
    Azure Data Lake Storage Gen2Azure Data Lake Storage Gen2 Autenticação de chave de conta, autenticação de identidade gerenciadaAccount key authentication, managed identity authentication

    Importante

  2. O formato de dados de origem é de Parquet, ORC ou Texto delimitado, com as seguintes configurações:The source data format is of Parquet, ORC, or Delimited text, with the following configurations:

    1. O caminho da pasta não contém o filtro curinga.Folder path doesn't contain wildcard filter.
    2. O nome do arquivo está vazio ou aponta para apenas um arquivo.File name is empty, or points to a single file. Se você especificar o nome de arquivo curinga na atividade de cópia, ele só poderá ser * ou *.*.If you specify wildcard file name in copy activity, it can only be * or *.*.
    3. rowDelimiter é padrão, \n, \r\n ou \r.rowDelimiter is default, \n, \r\n, or \r.
    4. nullValue é deixado como padrão ou definido como cadeia de caracteres vazia ("") e treatEmptyAsNull é deixado como padrão ou definido como true.nullValue is left as default or set to empty string (""), and treatEmptyAsNull is left as default or set to true.
    5. encodingName é deixado como padrão ou definido como utf-8.encodingName is left as default or set to utf-8.
    6. quoteChar, escapeChar e skipLineCount não são especificadas.quoteChar, escapeChar, and skipLineCount aren't specified. O PolyBase é compatível com a opção de ignorar a linha de cabeçalho, que pode ser configurada como firstRowAsHeader no ADF.PolyBase support skip header row, which can be configured as firstRowAsHeader in ADF.
    7. compression pode ser sem compactação, GZip ou Deflate.compression can be no compression, GZip, or Deflate.
  3. Se a sua origem for uma pasta, recursive na atividade de cópia precisará ser definida como true.If your source is a folder, recursive in copy activity must be set to true.

  4. wildcardFolderPath ,,,, wildcardFilename modifiedDateTimeStart modifiedDateTimeEnd prefix enablePartitionDiscovery e additionalColumns não são especificados.wildcardFolderPath , wildcardFilename, modifiedDateTimeStart, modifiedDateTimeEnd, prefix, enablePartitionDiscovery and additionalColumns are not specified.

Observação

Se a sua origem for uma pasta, o PolyBase recuperará arquivos da pasta e de todas as respectivas subpastas e não recuperará dados de arquivos para os quais o nome do arquivo começa com um sublinhado () ou um ponto final (.), conforme documentado aqui – argumento LOCATION.If your source is a folder, note PolyBase retrieves files from the folder and all of its subfolders, and it doesn't retrieve data from files for which the file name begins with an underline () or a period (.), as documented here - LOCATION argument.

"activities":[
    {
        "name": "CopyFromAzureBlobToSQLDataWarehouseViaPolyBase",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "ParquetDataset",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "AzureSQLDWDataset",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "ParquetSource",
                "storeSettings":{
                    "type": "AzureBlobStorageReadSettings",
                    "recursive": true
                }
            },
            "sink": {
                "type": "SqlDWSink",
                "allowPolyBase": true
            }
        }
    }
]

Cópia organizada usando PolyBaseStaged copy by using PolyBase

Quando os dados de origem não são nativamente compatíveis com o polybase, habilite a cópia de dados por meio de um blob do Azure de preparo provisório ou Azure Data Lake Storage Gen2 (não pode ser o armazenamento Premium do Azure).When your source data is not natively compatible with PolyBase, enable data copying via an interim staging Azure Blob or Azure Data Lake Storage Gen2 (it can't be Azure Premium Storage). Nesse caso, o Azure Data Factory converte automaticamente os dados para atender aos requisitos de formato de dados do PolyBase.In this case, Azure Data Factory automatically converts the data to meet the data format requirements of PolyBase. Em seguida, ele invoca o polybase para carregar dados no Azure Synapse Analytics.Then it invokes PolyBase to load data into Azure Synapse Analytics. Por fim, ele limpa os dados temporários do armazenamento.Finally, it cleans up your temporary data from the storage. Confira cópia em etapas para obter detalhes sobre como copiar dados por meio de um preparo.See Staged copy for details about copying data via a staging.

Para usar esse recurso, crie um serviço vinculado do armazenamento de BLOBs do Azure ou Azure data Lake Storage Gen2 serviço vinculado com a chave de conta ou a autenticação de identidade gerenciada que se refere à conta de armazenamento do Azure como o armazenamento provisório.To use this feature, create an Azure Blob Storage linked service or Azure Data Lake Storage Gen2 linked service with account key or managed identity authentication that refers to the Azure storage account as the interim storage.

Importante

"activities":[
    {
        "name": "CopyFromSQLServerToSQLDataWarehouseViaPolyBase",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "SQLServerDataset",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "AzureSQLDWDataset",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "SqlSource",
            },
            "sink": {
                "type": "SqlDWSink",
                "allowPolyBase": true
            },
            "enableStaging": true,
            "stagingSettings": {
                "linkedServiceName": {
                    "referenceName": "MyStagingStorage",
                    "type": "LinkedServiceReference"
                }
            }
        }
    }
]

Práticas recomendadas para usar o PolyBaseBest practices for using PolyBase

As seções a seguir fornecem práticas recomendadas além daquelas mencionadas em Práticas recomendadas para o Azure Synapse Analytics.The following sections provide best practices in addition to those mentioned in Best practices for Azure Synapse Analytics.

Permissão de banco de dados obrigatóriaRequired database permission

Para usar o polybase, o usuário que carrega dados no Azure Synapse Analytics deve ter permissão de "controle" no banco de dados de destino.To use PolyBase, the user that loads data into Azure Synapse Analytics must have "CONTROL" permission on the target database. Uma maneira de conseguir isso é adicionar o usuário como membro da função db_owner.One way to achieve that is to add the user as a member of the db_owner role. Saiba como fazer isso na visão geral da análise de Synapse do Azure.Learn how to do that in the Azure Synapse Analytics overview.

Limites de tamanho de linha e tipo de dadosRow size and data type limits

As cargas do PolyBase são limitadas a linhas menores que 1 MB.PolyBase loads are limited to rows smaller than 1 MB. Ele não pode ser usado para carregar para VARCHR (MAX), NVARCHAR (MAX) ou VARBINARY (MAX).It cannot be used to load to VARCHR(MAX), NVARCHAR(MAX), or VARBINARY(MAX). Para obter mais informações, consulte limites de capacidade de serviço do Azure Synapse Analytics.For more information, see Azure Synapse Analytics service capacity limits.

Quando os dados de origem tiverem linhas maiores que 1 MB, talvez você queira dividir verticalmente as tabelas de origem em várias pequenas.When your source data has rows greater than 1 MB, you might want to vertically split the source tables into several small ones. Certifique-se de que o maior tamanho de cada linha não exceda o limite.Make sure that the largest size of each row doesn't exceed the limit. As tabelas menores podem ser carregadas por meio de PolyBase e mescladas no Azure Synapse Analytics.The smaller tables can then be loaded by using PolyBase and merged together in Azure Synapse Analytics.

Como alternativa, para dados com colunas tão largas assim, você pode carregar os dados usando o ADF, sem o PolyBase. Para isso, desative a configuração "permitir PolyBase".Alternatively, for data with such wide columns, you can use non-PolyBase to load the data using ADF, by turning off "allow PolyBase" setting.

Classe de recurso do Azure Synapse AnalyticsAzure Synapse Analytics resource class

Para obter a melhor taxa de transferência possível, atribua uma classe de recurso maior ao usuário que carrega dados no Azure Synapse Analytics por meio do polybase.To achieve the best possible throughput, assign a larger resource class to the user that loads data into Azure Synapse Analytics via PolyBase.

Solucionando problemas do PolyBasePolyBase troubleshooting

Carregando na coluna DecimalLoading to Decimal column

Se os dados de origem estiverem em formato de texto ou outros repositórios compatíveis com polybase (usando cópia preparada e polybase) e contiverem um valor vazio a ser carregado na coluna decimal da análise de Synapse do Azure, você poderá encontrar o seguinte erro:If your source data is in text format or other non-PolyBase compatible stores (using staged copy and PolyBase), and it contains empty value to be loaded into Azure Synapse Analytics Decimal column, you may hit the following error:

ErrorCode=FailedDbOperation, ......HadoopSqlException: Error converting data type VARCHAR to DECIMAL.....Detailed Message=Empty string can't be converted to DECIMAL.....

A solução é desmarcar a opção "Usar o tipo padrão" (como false) no coletor da atividade de cópia -> configurações do PolyBase.The solution is to unselect "Use type default" option (as false) in copy activity sink -> PolyBase settings. "USE_TYPE_DEFAULT" é uma configuração nativa do PolyBase, que especifica como tratar valores ausentes em arquivos de texto delimitados quando o PolyBase recupera dados do arquivo de texto."USE_TYPE_DEFAULT" is a PolyBase native configuration, which specifies how to handle missing values in delimited text files when PolyBase retrieves data from the text file.

tableName no Azure Synapse AnalyticstableName in Azure Synapse Analytics

A tabela a seguir fornece exemplos de como especificar o tableName propriedade no conjunto de dados JSON.The following table gives examples of how to specify the tableName property in the JSON dataset. Ele mostra as várias combinações de nomes de esquema e tabela.It shows several combinations of schema and table names.

Esquema do BDDB Schema Nome da tabelaTable name tableName propriedade JSONtableName JSON property
dbodbo MyTableMyTable MyTable ou dbo.MyTable ou [dbo].[MyTable]MyTable or dbo.MyTable or [dbo].[MyTable]
dbo1dbo1 MyTableMyTable dbo1.MyTable ou [dbo1].[MyTable]dbo1.MyTable or [dbo1].[MyTable]
dbodbo My.TableMy.Table [My.Table] ou [dbo].[My.Table][My.Table] or [dbo].[My.Table]
dbo1dbo1 My.TableMy.Table [dbo1]. [My.Table][dbo1].[My.Table]

Se você vir o erro a seguir, o problema pode ser o valor especificado para o tableName propriedade.If you see the following error, the problem might be the value you specified for the tableName property. Consulte a tabela anterior para a maneira correta especificar valores para o tableName propriedade JSON.See the preceding table for the correct way to specify values for the tableName JSON property.

Type=System.Data.SqlClient.SqlException,Message=Invalid object name 'stg.Account_test'.,Source=.Net SqlClient Data Provider

Colunas com valores padrãoColumns with default values

No momento, o recurso PolyBase na fábrica de dados aceita apenas o mesmo número de colunas da tabela de destino.Currently, the PolyBase feature in Data Factory accepts only the same number of columns as in the target table. Um exemplo é uma tabela com quatro colunas em que uma delas é definida com um valor padrão.An example is a table with four columns where one of them is defined with a default value. Os dados de entrada ainda precisam ter quatro colunas.The input data still needs to have four columns. Um conjunto de dados de entrada de três colunas produz um erro semelhante à seguinte mensagem:A three-column input dataset yields an error similar to the following message:

All columns of the table must be specified in the INSERT BULK statement.

O valor NULL é uma forma especial do valor padrão.The NULL value is a special form of the default value. Se a coluna permite valor nulo, os dados de entrada no blob para essa coluna podem estar vazios.If the column is nullable, the input data in the blob for that column might be empty. Mas não pode estar ausente do conjunto de dados de entrada.But it can't be missing from the input dataset. O PolyBase insere NULL para valores ausentes no Azure Synapse Analytics.PolyBase inserts NULL for missing values in Azure Synapse Analytics.

Usar a instrução de cópia para carregar dados no Azure Synapse Analytics (versão prévia)Use COPY statement to load data into Azure Synapse Analytics (preview)

A instrução de cópia do Azure Synapse Analytics (versão prévia) dá suporte diretamente ao carregamento de dados do blob do Azure e Azure data Lake Storage Gen2.Azure Synapse Analytics COPY statement (preview) directly supports loading data from Azure Blob and Azure Data Lake Storage Gen2. Se os dados de origem atendem aos critérios descritos nesta seção, você pode optar por usar a instrução de cópia no ADF para carregar dados no Azure Synapse Analytics.If your source data meets the criteria described in this section, you can choose to use COPY statement in ADF to load data into Azure Synapse Analytics. O Azure Data Factory verificará as configurações e falhará na execução da atividade de cópia se os critérios não forem atendidos.Azure Data Factory checks the settings and fails the copy activity run if the criteria is not met.

Observação

Atualmente, o Data Factory só dá suporte à cópia de origens compatíveis com a instrução COPY, conforme mencionado abaixo.Currently Data Factory only support copy from COPY statement compatible sources mentioned below.

Dica

Ao usar a instrução de cópia com Azure Integration Runtime, as DIU (unidades de integração de dados) efetivas são sempre 2.When using COPY statement with Azure Integration Runtime, effective Data Integration Units (DIU) is always 2. O ajuste do DIU não afeta o desempenho, já que carregar dados do armazenamento é alimentado pelo mecanismo do Synapse.Tuning the DIU doesn't impact the performance, as loading data from storage is powered by Synapse engine.

O uso da instrução COPY dá suporte à seguinte configuração:Using COPY statement supports the following configuration:

  1. O serviço vinculado de origem e o formato acompanham os seguintes tipos e métodos de autenticação:The source linked service and format are with the following types and authentication methods:

    Tipo de armazenamento de dados de origem compatíveisSupported source data store type Formato compatívelSupported format Tipos de autenticação de origem compatíveisSupported source authentication type
    Blob do AzureAzure Blob Texto delimitadoDelimited text Autenticação de chave de conta, autenticação de assinatura de acesso compartilhado, autenticação de entidade de serviço, autenticação de identidade gerenciadaAccount key authentication, shared access signature authentication, service principal authentication, managed identity authentication
      ParquetParquet Autenticação de chave de conta, autenticação de assinatura de acesso compartilhadoAccount key authentication, shared access signature authentication
      ORCORC Autenticação de chave de conta, autenticação de assinatura de acesso compartilhadoAccount key authentication, shared access signature authentication
    Azure Data Lake Storage Gen2Azure Data Lake Storage Gen2 Texto delimitadoDelimited text
    ParquetParquet
    ORCORC
    Autenticação de chave de conta, autenticação de entidade de serviço, autenticação de identidade gerenciadaAccount key authentication, service principal authentication, managed identity authentication

    Importante

  2. As configurações de formato têm as seguintes particularidades:Format settings are with the following:

    1. Para Parquet: compression pode ser sem compactação, Snappy ou GZip.For Parquet: compression can be no compression, Snappy, or GZip.
    2. Para ORC: compression pode ser sem compactação, zlib ou Snappy.For ORC: compression can be no compression, zlib, or Snappy.
    3. Para Texto delimitado:For Delimited text:
      1. rowDelimiter é definido explicitamente como caractere único ou " \r\n", o valor padrão não é compatível.rowDelimiter is explicitly set as single character or "\r\n", the default value is not supported.
      2. nullValue é deixado como padrão ou definido como cadeia de caracteres vazia ("").nullValue is left as default or set to empty string ("").
      3. encodingName é deixado como padrão ou definido como utf-8 ou utf-16.encodingName is left as default or set to utf-8 or utf-16.
      4. escapeChar precisa ser o mesmo que quoteChar e não está vazio.escapeChar must be same as quoteChar, and is not empty.
      5. skipLineCount é deixado como padrão ou definido como 0.skipLineCount is left as default or set to 0.
      6. compression pode ser nenhuma compactação ou GZip.compression can be no compression or GZip.
  3. Se a sua origem for uma pasta, recursive na atividade de cópia precisará ser definida como true e wildcardFilename precisará ser *.If your source is a folder, recursive in copy activity must be set to true, and wildcardFilename need to be *.

  4. wildcardFolderPath , wildcardFilename (diferente de * ),,, modifiedDateTimeStart modifiedDateTimeEnd prefix enablePartitionDiscovery e additionalColumns não são especificados.wildcardFolderPath , wildcardFilename (other than *), modifiedDateTimeStart, modifiedDateTimeEnd, prefix, enablePartitionDiscovery and additionalColumns are not specified.

As seguintes configurações da instrução COPY são compatíveis em allowCopyCommand na atividade de cópia:The following COPY statement settings are supported under allowCopyCommand in copy activity:

PropriedadeProperty DescriçãoDescription ObrigatórioRequired
defaultValuesdefaultValues Especifica os valores padrão para cada coluna de destino no Azure Synapse Analytics.Specifies the default values for each target column in Azure Synapse Analytics. Os valores padrão na propriedade substituem a restrição DEFAULT definida no data warehouse e a coluna de identidade não pode ter um valor padrão.The default values in the property overwrite the DEFAULT constraint set in the data warehouse, and identity column cannot have a default value. NãoNo
additionalOptionsadditionalOptions Opções adicionais que serão passadas para uma instrução de cópia do Azure Synapse Analytics diretamente na cláusula "with" na instrução Copy.Additional options that will be passed to an Azure Synapse Analytics COPY statement directly in "With" clause in COPY statement. Coloque o valor entre aspas conforme necessário para alinhar com os requisitos da instrução COPY.Quote the value as needed to align with the COPY statement requirements. NãoNo
"activities":[
    {
        "name": "CopyFromAzureBlobToSQLDataWarehouseViaCOPY",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "ParquetDataset",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "AzureSQLDWDataset",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "ParquetSource",
                "storeSettings":{
                    "type": "AzureBlobStorageReadSettings",
                    "recursive": true
                }
            },
            "sink": {
                "type": "SqlDWSink",
                "allowCopyCommand": true,
                "copyCommandSettings": {
                    "defaultValues": [
                        {
                            "columnName": "col_string",
                            "defaultValue": "DefaultStringValue"
                        }
                    ],
                    "additionalOptions": {
                        "MAXERRORS": "10000",
                        "DATEFORMAT": "'ymd'"
                    }
                }
            },
            "enableSkipIncompatibleRow": true
        }
    }
]

Mapeamento de propriedades de fluxo de dadosMapping data flow properties

Ao transformar dados no fluxo de dados de mapeamento, você pode ler e gravar em tabelas do Azure Synapse Analytics.When transforming data in mapping data flow, you can read and write to tables from Azure Synapse Analytics. Para obter mais informações, confira transformação de origem e transformação do coletor nos fluxos de dados de mapeamento.For more information, see the source transformation and sink transformation in mapping data flows.

Transformação de origemSource transformation

Configurações específicas para o Azure Synapse Analytics estão disponíveis na guia Opções de Origem da transformação de origem.Settings specific to Azure Synapse Analytics are available in the Source Options tab of the source transformation.

Entrada do Selecione se você apontar sua fonte em uma tabela (equivalente de Select * from <table-name> ) ou inserir uma consulta SQL personalizada.Input Select whether you point your source at a table (equivalent of Select * from <table-name>) or enter a custom SQL query.

Habilitar preparo É altamente recomendável que você use essa opção em cargas de trabalho de produção com as fontes do Azure Synapse Analytics.Enable Staging It is highly recommended that you use this option in production workloads with Azure Synapse Analytics sources. Quando você executa uma atividade de fluxo de dados com fontes do Azure Synapse Analytics de um pipeline, o ADF solicitará uma conta de armazenamento de local de preparo e usará isso para o carregamento de dados em etapas.When you execute a data flow activity with Azure Synapse Analytics sources from a pipeline, ADF will prompt you for a staging location storage account and will use that for staged data loading. É o mecanismo mais rápido para carregar dados do Azure Synapse Analytics.It is the fastest mechanism to load data from Azure Synapse Analytics.

Consulta: se você selecionar Consulta no campo de entrada, insira uma consulta SQL para sua origem.Query: If you select Query in the input field, enter a SQL query for your source. Essa configuração substitui qualquer tabela que você tenha escolhido no conjunto de dados.This setting overrides any table that you've chosen in the dataset. Cláusulas Order By não são compatíveis aqui, mas você pode definir uma instrução SELECT FROM completa.Order By clauses aren't supported here, but you can set a full SELECT FROM statement. Também pode usar funções de tabela definidas pelo usuário.You can also use user-defined table functions. select * from udfGetData() é um UDF no SQL que retorna uma tabela.select * from udfGetData() is a UDF in SQL that returns a table. Essa consulta produzirá uma tabela de origem que você pode usar em seu fluxo de dados.This query will produce a source table that you can use in your data flow. O uso de consultas também é uma ótima maneira de reduzir linhas para testes ou pesquisas.Using queries is also a great way to reduce rows for testing or for lookups.

Exemplo do SQL: Select * from MyTable where customerId > 1000 and customerId < 2000SQL Example: Select * from MyTable where customerId > 1000 and customerId < 2000

Tamanho do lote: insira um tamanho de lote para dividir dados grandes em leituras.Batch size: Enter a batch size to chunk large data into reads. Em fluxos de dados, o ADF usará essa configuração para definir o cache de coluna do Spark.In data flows, ADF will use this setting to set Spark columnar caching. Esse é um campo de opção, que usará padrões do Spark se ele for deixado em branco.This is an option field, which will use Spark defaults if it is left blank.

Nível de isolamento: o padrão para as origens SQL no fluxo de dados de mapeamento é leitura não confirmada.Isolation Level: The default for SQL sources in mapping data flow is read uncommitted. Você pode alterar o nível de isolamento aqui para um destes valores:You can change the isolation level here to one of these values:

  • Leitura ConfirmadaRead Committed
  • Leitura Não ConfirmadaRead Uncommitted
  • Leitura repetidaRepeatable Read
  • Serializable *-nenhum (ignorar nível de isolamento)Serializable *- None (ignore isolation level)

Nível de IsolamentoIsolation Level

Transformação de coletorSink transformation

Configurações específicas para o Azure Synapse Analytics estão disponíveis na guia Configurações da transformação de coletor.Settings specific to Azure Synapse Analytics are available in the Settings tab of the sink transformation.

Método Update: determina quais operações são permitidas no destino do banco de dados.Update method: Determines what operations are allowed on your database destination. O padrão é permitir apenas inserções.The default is to only allow inserts. Para atualizar, fazer upsert ou excluir linhas, uma transformação alter-row é necessária para marcar as linhas para essas ações.To update, upsert, or delete rows, an alter-row transformation is required to tag rows for those actions. Para atualizações, upserts e exclusões, é necessário selecionar uma coluna de chave ou colunas para determinar qual linha alterar.For updates, upserts and deletes, a key column or columns must be set to determine which row to alter.

Ação de tabela: determina se deve-se recriar ou remover todas as linhas da tabela de destino antes da gravação.Table action: Determines whether to recreate or remove all rows from the destination table prior to writing.

  • Nenhuma: nenhuma ação será feita na tabela.None: No action will be done to the table.
  • Recriar: a tabela será descartada e recriada.Recreate: The table will get dropped and recreated. Necessário ao criar uma tabela dinamicamente.Required if creating a new table dynamically.
  • Truncar: todas as linhas da tabela de destino serão removidas.Truncate: All rows from the target table will get removed.

Habilitar preparo: Determina se o polybase deve ou não ser usado ao gravar no Azure Synapse Analytics.Enable staging: Determines whether or not to use PolyBase when writing to Azure Synapse Analytics. O armazenamento de preparo é configurado na atividade executar fluxo de dados.The staging storage is configured in Execute Data Flow activity.

Tamanho do lote: controla quantas linhas estão sendo gravadas em cada bucket.Batch size: Controls how many rows are being written in each bucket. Tamanhos de lote maiores aprimoram a compactação e a otimização de memória, mas geram risco de exceções de memória insuficiente ao armazenar dados em cache.Larger batch sizes improve compression and memory optimization, but risk out of memory exceptions when caching data.

Scripts SQL prévios e posteriores: Insira scripts SQL de várias linhas que serão executados antes (pré-processamento) e após (pós-processamento) os dados serem gravados no banco de dados do coletorPre and Post SQL scripts: Enter multi-line SQL scripts that will execute before (pre-processing) and after (post-processing) data is written to your Sink database

Scripts SQL de pré e pós-processamentopre and post SQL processing scripts

Pesquisar propriedades de atividadeLookup activity properties

Para saber detalhes sobre as propriedades, verifique Atividade de pesquisa.To learn details about the properties, check Lookup activity.

Propriedades de atividade GetMetadataGetMetadata activity properties

Para saber detalhes sobre as propriedades, verifique Atividade GetMetadataTo learn details about the properties, check GetMetadata activity

Mapeamento do tipo de dados para o Azure Synapse AnalyticsData type mapping for Azure Synapse Analytics

Quando você copia dados de ou para o Azure Synapse Analytics, os mapeamentos a seguir são usados dos tipos de dados do Azure Synapse Analytics para os tipos de dados temporários do Azure Data Factory.When you copy data from or to Azure Synapse Analytics, the following mappings are used from Azure Synapse Analytics data types to Azure Data Factory interim data types. Consulte mapeamentos de tipo de esquema e dados para saber como a atividade de cópia mapeia o tipo de esquema e os dados de origem para o coletor.See schema and data type mappings to learn how Copy Activity maps the source schema and data type to the sink.

Dica

Consulte o artigo tipos de dados de tabela no Azure Synapse Analytics em tipos de dados com suporte do Azure Synapse Analytics e as soluções alternativas para os que não têm suporte.Refer to Table data types in Azure Synapse Analytics article on Azure Synapse Analytics supported data types and the workarounds for unsupported ones.

Tipo de dados do Azure Synapse AnalyticsAzure Synapse Analytics data type Tipo de dados provisório do Data FactoryData Factory interim data type
BIGINTbigint Int64Int64
binarybinary Byte[]Byte[]
bitbit BooleanBoolean
charchar String, Char[]String, Char[]
datedate DatetimeDateTime
DatetimeDatetime DatetimeDateTime
datetime2datetime2 DatetimeDateTime
DatetimeoffsetDatetimeoffset DateTimeOffsetDateTimeOffset
DecimalDecimal DecimalDecimal
FILESTREAM attribute (varbinary(max))FILESTREAM attribute (varbinary(max)) Byte[]Byte[]
FloatFloat DoubleDouble
imageimage Byte[]Byte[]
INTint Int32Int32
moneymoney DecimalDecimal
NCHARnchar String, Char[]String, Char[]
numericnumeric DecimalDecimal
NVARCHARnvarchar String, Char[]String, Char[]
realreal SingleSingle
rowversionrowversion Byte[]Byte[]
smalldatetimesmalldatetime DatetimeDateTime
SMALLINTsmallint Int16Int16
SMALLMONEYsmallmoney DecimalDecimal
timetime TimeSpanTimeSpan
TINYINTtinyint ByteByte
UNIQUEIDENTIFIERuniqueidentifier GuidGuid
varbinaryvarbinary Byte[]Byte[]
varcharvarchar String, Char[]String, Char[]

Próximas etapasNext steps

Para obter uma lista de repositórios de dados com suporte como fontes e repositórios por Atividade de Cópia no Azure Data Factory, consulte repositórios de dados e formatos suportados .For a list of data stores supported as sources and sinks by Copy Activity in Azure Data Factory, see supported data stores and formats.