UiPath Documentation
activities
latest
false
Atividades do desenvolvedor
Importante :
A tradução automática foi aplicada parcialmente neste conteúdo. A localização de um conteúdo recém-publicado pode levar de 1 a 2 semanas para ficar disponível.

Melhores práticas

Práticas recomendadas para atividades Database, que cobrem strings de conexão para SQL Server, Oracle, MySQL e outros bancos de dados, procedimentos armazenados e solução de problemas.

Uso de um procedimento armazenado com o OracleRefCursor​

Ao usar procedimentos armazenados no Oracle, certifique-se de que o REF CURSOR esteja corretamente associado à variável Oracle.ManagedDataAccess.Types.OracleRefCursor.

Para fazer isso, você precisa garantir que o número de parâmetros e seu tipo correspondam aos configurados na propriedade Parâmetros da atividade Run Query.

Você pode obter o conteúdo do cursor usando a atividade Invoke Code ou pode passá-lo a outra consulta de banco de dados como um parâmetro de entrada. Aqui está um exemplo de Invoke Code para convertê-lo em uma tabela de dados:

Oracle.ManagedDataAccess.Client.OracleDataReader reader2 = myRefCursor.GetDataReader();
                dt = new DataTable();
                dt.Load(reader2);
Oracle.ManagedDataAccess.Client.OracleDataReader reader2 = myRefCursor.GetDataReader();
                dt = new DataTable();
                dt.Load(reader2);

Você deve descartar o cursor quando terminar com ele. Você pode fazer isso com a atividade Invoke Code (myRefCursor.Dispose), com a atividade Invoke Method do pacote de atividades System ou por meio de um comando SQL que você executa.

Execução de procedimentos armazenados com parâmetros​

As atividades Run Query e Run Command podem chamar um procedimento armazenado em vez de uma instrução SQL simples. Use Run Query quando o procedimento retornar um conjunto de resultados e Run Command quando isso não acontecer.

Para chamar um procedimento armazenado:

  1. Defina a propriedade Tipo de comando como Procedimento armazenado.
  2. Insira o nome do procedimento no campo SQL , sem EXEC wrapper CALL .
  3. Adicione uma entrada à coleção Parâmetros para cada parâmetro de procedimento.

Cada entrada de Parâmetros tem os seguintes atributos:

  • Um nome.
  • Uma direção (In, Out ou In/Out).
  • Um tipo.
  • Um valor.

Os valores Out e In/Out são lidos de volta após a chamada. A forma como os nomes e a ordem dos parâmetros são interpretados depende do provedor do banco de dados, portanto, a orientação difere por banco de dados nas seções a seguir.

Banco de DadosProvedorComo chamarAssociação de parâmetros
Microsoft SQL ServerMicrosoft.Data.SqlClientTipo de comando = Procedimento Armazenado, SQL = nome do procedimentoPor nome (@name); a ordem não importa
OracleOracle.ManagedDataAccess.ClientTipo de comando = Procedimento Armazenado, SQL = nome do procedimentoPor posição; adicionar parâmetros na ordem declarada do procedimento
MySQL/ MariaDBAbrir conectividade de banco de dados (ODBC)Tipo de comando = Text, SQL = CALL procedure_name(?, ?)Espaços reservados posicionais ?
PostgreSQLODBCTipo de comando = Text, SELECT * FROM function_name(?) ou CALL procedure_name(?)Espaços reservados posicionais ?
SQLiteMicrosoft.Data.SqliteNão aplicávelSQLite não tem procedimentos armazenados

Microsoft SQL Server​

O SQL Server vincula parâmetros por nome, então os nomes de entrada Parâmetros devem corresponder aos parâmetros com prefixo @do procedimento, e sua ordem não importa. Os parâmetros de saída são retornados quando você define a direção de entrada como Out.

CREATE PROCEDURE dbo.usp_CountCustomers @Country NVARCHAR(5), @Total INT OUTPUT AS
BEGIN
    SET NOCOUNT ON;
    SELECT @Total = COUNT(*) FROM dbo.customer WHERE country = @Country;
END;
CREATE PROCEDURE dbo.usp_CountCustomers @Country NVARCHAR(5), @Total INT OUTPUT AS
BEGIN
    SET NOCOUNT ON;
    SELECT @Total = COUNT(*) FROM dbo.customer WHERE country = @Country;
END;

Configure Executar Comando com tipo de Comando = Procedimento Armazenado e SQL = dbo.usp_CountCustomers, em seguida, adicione os parâmetros:

NameDirectionTipoValor
@CountryEmStringUS
@TotalOutInt32—

Após a execução, @Total mantém a contagem. Para um procedimento que retorna linhas, use Run Query ; o resultado está disponível na saída de Tabela de dados .

Oracle​

O Oracle vincula parâmetros por posição, não por nome, então você deve adicionar as entradas Parâmetros na mesma ordem que o procedimento as declara. Um procedimento retorna um conjunto de resultados por meio de um parâmetro OUT SYS_REFCURSOR ; declare essa entrada com o tipo OracleRefCursor e a direção Out , e as linhas são retornadas na saída Tabela de dados de Run Query. Consulte também Uso de um procedimento armazenado com o OracleRefCursor.

CREATE OR REPLACE PROCEDURE get_customers(p_country IN VARCHAR2, p_cursor OUT SYS_REFCURSOR) AS
BEGIN
    OPEN p_cursor FOR SELECT id, name FROM customer WHERE country = p_country ORDER BY id;
END;
CREATE OR REPLACE PROCEDURE get_customers(p_country IN VARCHAR2, p_cursor OUT SYS_REFCURSOR) AS
BEGIN
    OPEN p_cursor FOR SELECT id, name FROM customer WHERE country = p_country ORDER BY id;
END;

Configure Run Query com tipo de Comando = Procedimento Armazenado e SQL = get_customers, em seguida, adicione os parâmetros na ordem de declaração:

NameDirectionTipoValor
p_countryEmStringUS
p_cursorOutOracleRefCursor—
AVISO:

O Oracle vincula parâmetros por posição. Se as entradas de Parâmetros não estiverem na ordem declarada do procedimento, os valores serão atribuídos aos parâmetros errados e a chamada falhará ou retornará uma saída vazia.

MySQL e MariaDB​

Quando você se conectar ao MySQL ou MariaDB por meio do ODBC, chame o procedimento com o tipo de comando de Texto e uma instrução CALL que usa placeholders ? . Um SELECT dentro do procedimento é retornado na saída Tabela de dados de Run Query.

CREATE PROCEDURE list_customers(IN p_country VARCHAR(5))
BEGIN
    SELECT id, name FROM customer WHERE country = p_country ORDER BY id;
END
CREATE PROCEDURE list_customers(IN p_country VARCHAR(5))
BEGIN
    SELECT id, name FROM customer WHERE country = p_country ORDER BY id;
END

Configure Executar Consulta com o tipo de comando = Text e consulta SQL = CALL list_customers(?) e, em seguida, adicione um parâmetro In para o espaço reservado.

Observação:

Para procedimentos do MySQL com parâmetros OUT , leia o valor de um conjunto de resultados retornado ou use o padrão CALL procedure_name(?, @out); SELECT @out; , porque os valores OUT nem sempre são mapeados de volta para a entrada do parâmetro por meio do ODBC.

PostgreSQL​

O PostgreSQL expõe dois tipos de rotinas: funções, chamadas com SELECT, e procedimentos, chamados com CALL. Quando você se conectar por meio de ODBC, use o tipo de comando de Texto com placeholders ? posicionais. Use Run Query para uma função que retorna linhas.

CREATE FUNCTION get_customers_by_country(p_country text)
RETURNS TABLE(id int, name text) LANGUAGE sql AS $$
    SELECT id, name FROM customer WHERE country = p_country ORDER BY id;
$$;
CREATE FUNCTION get_customers_by_country(p_country text)
RETURNS TABLE(id int, name text) LANGUAGE sql AS $$
    SELECT id, name FROM customer WHERE country = p_country ORDER BY id;
$$;

Configure Executar Consulta com o tipo de comando = Text e consulta SQL = SELECT * FROM get_customers_by_country(?) e, em seguida, adicione um parâmetro In . Para invocar um procedimento criado com CREATE PROCEDURE, use CALL procedure_name(?) em vez disso.

SQLite​

O SQLite não é compatível com procedimentos armazenados. Mantenha a lógica no seu fluxo de trabalho usando instruções Run Query e Run Command com parâmetros ou defina uma visualização reutilizável.

Strings de conexão para diferentes sistemas de banco de dados​

Este guia fornece exemplos de strings de conexão para a atividade Connect to Database , permitindo que você se conecte a vários bancos de dados usando drivers nativos e ODBC. Inclui exemplos de string de conexão para:

  • Microsoft SQL Server (incluindo a autenticação do Microsoft Entra ID)
  • Oracle
  • PostgreSQL
  • MySQL
  • Amazon Amazonas Azure
  • Microsoft Access
  • SAP HANA
  • IBM Db2
  • SQLite

Uma seção de solução de problemas para erros de conexão comuns segue os exemplos. Siga as práticas recomendadas para garantir uma conectividade segura e eficiente do banco de dados.

Microsoft SQL Server​

Formatos de string de conexão comuns para o Microsoft SQL Server ao usar o Microsoft.Data.SqlClient.

Autenticação do SQL Server e ODBC​
  1. Usando a autenticação do SQL Server:

    Data Source=SERVER_NAME;Initial Catalog=DATABASE_NAME;User ID=USERNAME;Password=<your-password>;

  2. Com uma porta específica:

    Data Source=SERVER_NAME,PORT_NUMBER;Initial Catalog=DATABASE_NAME;User ID=USERNAME;Password=<your-password>;

  3. Uso do driver ODBC:

    Driver={ODBC Driver 18 for SQL Server};Server=SERVER_NAME;Database=DATABASE_NAME;Uid=USERNAME;Pwd=<your-password>;Encrypt=yes;TrustServerCertificate=no;

Importante:

Por padrão, essas atividades se conectam Encrypt=True. Uma conexão com um servidor com um certificado autoassinado ou não confiável falha a menos que você adicione TrustServerCertificate=True (apenas teste ou desenvolvimento) ou instale um certificado confiável. Para um comportamento previsível, defina ambas as palavras-chave explicitamente, por exemplo, Encrypt=True;TrustServerCertificate=False;.

Autenticação do Microsoft Entra ID​
  1. Usando autenticação de senha (obsoleta pela Microsoft e incompatível com a autenticação multifator (MFA); prefira interativa, principal de serviço ou identidade gerenciada):

    Server=tcp:SERVER.database.windows.net,1433;Initial Catalog=DATABASE_NAME;Authentication=Active Directory Password;User ID=user@yourtenant.onmicrosoft.com;Password=<your-password>;Encrypt=True;

  2. Usando a autenticação da entidade de serviço (para robôs não assistidos):

    Server=tcp:SERVER.database.windows.net,1433;Initial Catalog=DATABASE_NAME;Authentication=Active Directory Service Principal;User ID=APP_CLIENT_ID;Password=<your-client-secret>;Encrypt=True;

  3. Usando a autenticação de identidade gerenciada (omita User ID para uma identidade atribuída pelo sistema; para uma identidade atribuída pelo usuário, defina-a como o ID do cliente da identidade):

    Server=tcp:SERVER.database.windows.net,1433;Initial Catalog=DATABASE_NAME;Authentication=Active Directory Managed Identity;User ID=USER_ASSIGNED_MI_CLIENT_ID;Encrypt=True;

  4. Usando autenticação integrada (usa a Autenticação Integrada do Windows com uma identidade federada do Active Directory local):

    Server=tcp:SERVER.database.windows.net,1433;Initial Catalog=DATABASE_NAME;Authentication=Active Directory Integrated;Encrypt=True;

  5. Usando a autenticação interativa (abre um navegador com uma solicitação de MFA; apenas para uso assistido ou de desenvolvimento, não para robôs não assistidos):

    Server=tcp:SERVER.database.windows.net,1433;Initial Catalog=DATABASE_NAME;Authentication=Active Directory Interactive;User ID=user@yourtenant.onmicrosoft.com;Encrypt=True;

Para o driver ODBC, os valores de palavra-chave equivalentes não têm espaços: ActiveDirectoryPassword, ActiveDirectoryServicePrincipal, ActiveDirectoryMsi (identidade gerenciada), ActiveDirectoryIntegrated e ActiveDirectoryInteractive. ActiveDirectoryInteractive está disponível apenas no Windows.

Dica:

Se o mesmo fluxo de trabalho for executado em um robô e em uma máquina de desenvolvimento, Authentication=Active Directory Default. Ela usa DefaultAzureCredential, que tenta variáveis de ambiente, identidade de carga de trabalho e identidade gerenciada antes de recair nas credenciais da ferramenta de desenvolvedor.

Você pode aprender mais sobre a sintaxe da string de conexão na documentação oficial da Microsoft e sobre a autenticação do Microsoft Entra na documentação de autenticação do Microsoft Entra.

Arquivo do Excel​

Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=C:\full\path\to\the\sampleFile.xlsx;

Acesso a dados gerenciados do Oracle​

Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=XEPDB1)));User Id=system;Password=<your-password>;

Você também pode usar o formulário curto do Easy Connect: Data Source=//HOST_NAME:1521/SERVICE_NAME;User Id=USERNAME;Password=<your-password>;.

Para obter mais informações, consulte o Oracle Data Provider para documentação.NET.

Driver Unicode do ODBC 8.3 para SQL​

Driver={MySQL ODBC 8.3 Unicode Driver};Server=SERVER_NAME;Database=DATABASE_NAME;User=USERNAME;Password=<your-password>;Option=3;

Você pode aprender mais sobre isso através da página de documentação oficial do MySQL aqui.

Driver SQL ODBC 8.3 ANSI​

Driver={MySQL ODBC 8.3 ANSI Driver};Server=SERVER_NAME;Database=DATABASE_NAME;User=USERNAME;Password=<your-password>;Option=3;

Substitua a versão no nome do driver pela versão do MySQL Connector/ODBC instalada na máquina (por exemplo, MySQL ODBC 9.4 Unicode Driver); o nome deve corresponder exatamente ao driver registrado. Prefira o driver Unicode ao invés do driver ANSI para evitar corromper dados não ASCII. O sinalizador Option=3 legado é opcional e não necessário para uso típico.

PostgreSQL​

Driver={PostgreSQL Unicode};Server=SERVER_NAME;Port=5432;Database=DATABASE_NAME;Uid=USERNAME;Pwd=<your-password>;

Use a variante ANSI Driver={PostgreSQL ANSI};… apenas para codificações legadas de byte único; prefira o driver Unicode para bancos de dados UTF-8. Adicione sslmode=require; (minúsculas) para impor o TLS.

Importante:

O Driver={...} deve corresponder ao driver registrado na máquina que executa o robô. Dependendo do instalador, o driver psqlODBC de 64 bits é registrado como PostgreSQL Unicode ou PostgreSQL Unicode(x64) (e os equivalentes ANSI). Se o nome não corresponder a um driver registrado, a conexão falhará com "nome da origem de dados não encontrado".

Verifique o nome exato registrado no Administrador de Fonte de Dados ODBC de C:\Windows\System32\odbcad32.exe bits ().

Você pode saber mais consulte a documentação do psqlODBC.

Amazon URL (compatível com MySQL)​

O Amazon Amazon MySQL-Compatible Edition usa o protocolo de conexão do MySQL, então você se conecta com o driver do MySQL Connector/ODBC. Aponte Server no ponto de extremidade do cluster (gravador) do Azure:

Driver={MySQL ODBC 9.4 Unicode Driver};Server=CLUSTER.cluster-xxxx.REGION.rds.amazonaws.com;Port=3306;Database=DATABASE_NAME;User=USERNAME;Password=<your-password>;

Banco de dados autônomo Oracle (ATP/ADW) com carteira​

Para se conectar ao Oracle Autonomus Database (Processamento de Transações Autônomas ou Warehouse de Dados Autônomo):

  1. Baixe o portfólio de instâncias (Wallet_DBNAME.zip) do Oracle Cloud Infrastructure.
  2. Extraia todos os arquivos do arquivo da carteira para uma pasta na máquina do robô.
  3. Defina a variável de ambiente TNS_ADMIN para essa pasta.
  4. Edite o diretório WALLET_LOCATION no sqlnet.ora da carteira para essa mesma pasta. A carteira é enviada com um espaço reservado ?/network/admin que você deve substituir, porque TNS_ADMIN sozinho não é suficiente.

Com a carteira de login automático (cwallet.sso), nenhuma senha da carteira é necessária. Caso contrário, forneça a senha da carteira para que o driver possa abrir o ewallet.p12 protegido por senha.

Em seguida, use um alias de serviço de tnsnames.ora (DBNAME_high, DBNAME_medium ou DBNAME_low, mais DBNAME_tp e DBNAME_tpurgent em bancos de dados de processamento de transações):

Data Source=DBNAME_low;User Id=USERNAME;Password=<your-password>;

Dica:

Você também pode conectar-se sem uma carteira usando o TLS unidirecional, desde que a instância do Banco de Dados Autônomo esteja configurada para permitir conexões TLS. As instâncias configuradas para TLS mutuamente (mTLS) ainda exigem a carteira.

Você pode saber mais consulte a documentação de configuração do Oracle ODP.NET.

Microsoft Access​

Uso do driver ODBC:

Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=C:\full\path\to\database.accdb;Uid=Admin;Pwd=;

Usando o provedor OLE DB (, disponível System.Data.OleDb no Windows):

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\full\path\to\database.accdb;Persist Security Info=False;

Para um arquivo protegido por senha, acrescente Jet OLEDB:Database Password=<your-password>; à string OLE DB.

Importante:

Tanto o driver ODBC quanto o provedor ACE OLE DB vêm do redistribuível do Mecanismo de Banco de Dados do Microsoft Access, cuja arquitetura (x86 ou x64) deve corresponder à arquitetura do robô e do projeto. Uma incompatibilidade resulta em um erro “provedor não registrado na máquina local” erro.

SAP HANA​

Driver={HDBODBC};ServerNode=HOST_NAME:3NN15;UID=USERNAME;PWD=<your-password>;

HDBODBC para robôs de 64 bits (HDBODBC32 apenas para um processo de 32 bits). Para um banco de dados de contêiner único ou o primeiro tenant, a porta é 3NN15, onde NN é o número da instância de dois dígitos — por exemplo, 30015 para a instância 00 ou 30515 para a instância 05.

Para um sistema de contêiner de banco de dados multitenant (MDC), conecte-se por meio da porta de banco de dados do sistema 3NN13 e nomeie o tenant, que é o formulário que a SAP recomenda:

Driver={HDBODBC};ServerNode=HOST_NAME:30013;DATABASENAME=TENANT_DB;UID=USERNAME;PWD=<your-password>;

Importante:

Para SAP HANA Cloud (em contrário ao SAP HANA local), o host é um endpoint no estilo UUID na porta 443, e a conexão é sempre criptografada. Defina encrypt=TRUE explicitamente para cliente SAP HANA 2.5 e anterior; os clientes mais recentes o inferem na porta 443. O esquema de portas 3NN15 aplica-se apenas a sistemas locais.

IBM Db2​

Driver={IBM DB2 ODBC DRIVER};Database=DATABASE_NAME;Hostname=HOST_NAME;Port=50000;Protocol=TCPIP;Uid=USERNAME;Pwd=<your-password>;

O nome do driver registrado pode ser específico da instalação — com várias cópias do Db2, pode ser IBM DB2 ODBC DRIVER - DB2COPY1 Verifique o nome exato no Administrador da Fonte de Dados ODBC no Windows ou em odbcinst.ini no Linux. A porta 50000 é o padrão comum, mas a porta real é definida por instância por SVCENAME.

SQLite​

As atividades Database usam Microsoft.Data.Sqlite Forneça o caminho para o arquivo de banco de dados:

Data Source=C:\full\path\to\database.db;

As palavras-chave opcionais incluem Mode=ReadOnly (ou ReadWrite / ReadWriteCreate), Foreign Keys=True para impor a integridade referencial e Cache=Shared. A palavra-chave Version=3 não é válida aqui — ela pertence ao provedor System.Data.SQLite mais antigo e resulta em um erro.

As atividades Database são executadas no.NET e não usam drivers JDBC diretamente. Para alcançar um banco de dados que você normalmente acessaria por meio do JDBC, use o driver ODBC com a string de conexão ODBC para esse banco de dados neste guia ou implemente a conexão em um fluxo de trabalho codificado usando o driver.NET ou ADO.NET do fornecedor do banco de dados.

Solução de problemas de conexão comuns​

Nome da origem de dados não encontrado (erro IM002)​

ERROR [IM002] [Microsoft][ODBC Driver Manager] Data source name not found, and no default driver specified

O driver ODBC nomeado em Driver={...} não está instalado ou está registrado com outro nome ou arquitetura. Para corrigi-lo:

  1. Instale o driver ODBC correspondente.
  2. Confirme se aparece no Administrador de Fonte de Dados ODBC que corresponde à arquitetura do robô. Há administradores separados de 32 bits e 64 bits.
  3. Copie o nome exato do driver do administrador para Driver={...}. O nome é muitas vezes específico da versão ou da instalação (por exemplo, PostgreSQL Unicode(x64), MySQL ODBC 9.4 Unicode Driver ou IBM DB2 ODBC DRIVER - DB2COPY1).

Não foi possível carregar o driver (erro IM003)​

ERROR [IM003] Specified driver could not be loaded due to system error 1114

O erro do sistema 1114 significa que a biblioteca do driver foi encontrada, mas sua rotina de inicialização falhou — normalmente uma dependência ausente (como um runtime necessário) ou uma incompatibilidade de arquitetura ou versão. É comum com o Oracle Instant Client (SQORA32.dll) e o IBM Db2 (DB2CLIO.DLL). Para corrigi-lo:

  1. Certifique-se de que a arquitetura do driver corresponda ao runtime.
  2. Instale quaisquer pré-requisitos que o driver exigir.
  3. Reinstale ou atualize o driver.

Arquitetura de driver e suporte à plataforma​

Instale o driver do banco de dados que corresponda à arquitetura de runtime do projeto. Os projetos do Windows são executados como processos de 64 bits e precisam do driver ODBC ou OLE DB de 64 bits. Os projetos do Windows - Legado são executados como processos de 32 bits e precisam do driver de 32 bits.

OLE DB (,System.Data.OleDb para Access e Excel) está disponível apenas no Windows. O ODBC funciona no Windows e em robôs Linux ou macOS quando o unixODBC 2.3.1 ou posterior e o driver de destino estão instalados nessa máquina.

Dica:

Após instalar um driver, reinicie o Studio ou o robô para que ele detecte o driver.

Esta página foi útil?

Conectar

Precisa de ajuda? Suporte(opens in new window)

Quer aprender? Academia UiPath(opens in new window)

Tem perguntas? Fórum do UiPath(opens in new window)

Fique por dentro das novidades