em 08-29-2022 02:07 PM - editado pela última vez em 08-29-2022 02:09 PM por FláviaB
Como criar conexões DSN-less para bancos de dados
Muitas pessoas precisam criar conexões ODBC para acessar dados externos, mas muitas vezes é dificil de se ter certeza de como criar as strings de conexão, principalmente quando falamos de conexões DSN-less. Aqui você vai encontrar um guia de referência com alguns exemplos de strings comuns para conexões DSN-less. Se não encontrar a string de conexão que precisa neste artigo, busque a informação diretamente no site do fornecedor do banco de dados, na documentação do driver ou no website connectionstrings.org.
Strings de conexão DSN-les são muito úteis e práticas para auxiliar na transferência de workflows entre diferentes computadores, visto que o computador a receber o fluxo não precisará configurar uma conexão DSN via ODBC, bastará que o mesmo possua o driver utilizado na conexão instalado na máquina.
Pré-requisitos
Strings de conexão DSN-less geralmente incluem:
Obs:
Conexão DSN ODBC DSN padrão:
odbc:DSN=Nome_DSN;UID=Usuário;PWD=Senha;
Exemplo de conexão DSN-less
odbc:DRIVER={SQL Server Native Client 11.0};UID=Usuário;PWD=Senha;DATABASE=Nome_Banco_de_dados;SERVER=Host_Banco_de_dados
Conexão DSN-less marcada como confiável (trusted), com ID e senha sendo capturados na configuração do driver
odbc:DRIVER={SQL Server Native Client 11.0};DATABASE=Nome_Banco_de_dados;SERVER=Servidor;Trusted_Connection=yes
Strings de conexão ODBC para Hadoop e Cloudera
Existem plataformas separadas para Hadoop e Cloudera, bem como as duas combinadas na mesma plataforma. Essas plataformas utilizam os mesmos tipos de driver ODBC: Hive (data warehouse), Impala (processamento paralelo em massa) e Spark (processamento baseado em performance)
Para conexões DSN é simples. Tendo a DSN já criada e configurada na máquina, a string de conexão precisa de apenas um parâmetro: DSN=DataSourceName
Já as conexões DSN-less para Cloudera e Hadoop precisam de mais informações. O driver, host e porta precisam estar presentes na conexão juntamente com o mecanismo de autenticação.
O mecanismo de autenticação para esses drivers tambêm são os mesmo (AuthMech)
0 = Sem autenticação
1 = Kerberos
2 = Usuário - o UID pode ser omitido se o login anônimo for habilitado
3 = Usuário e senha
Sem autenticação
odbc:DRIVER={Simba Hive ODBC Driver};Host=Nome_servidor;Port=Numero_da_porta;AuthMech=0;
odbc:DRIVER={Simba Impala ODBC Driver};Host=Nome_servidor;Port=Numero_da_porta;AuthMech=0;
odbc:DRIVER={Simba Spark ODBC Driver};Host=Nome_servidor;Port=Numero_da_porta;AuthMech=0;
Kerberos
odbc:DRIVER={Simba Hive ODBC Driver};Host=Nome_servidor;Port=Numero_da_porta;AuthMech=1;KrbRealm=Domínio_(Realm);KrbHostFQDN=Nome_do_dominio;KrbServiceName=Nome_do_serviço;
odbc:DRIVER={Simba Impala ODBC Driver};Host=Nome_servidor;Port=Numero_da_porta;AuthMech=1;KrbRealm=Domínio_(Realm);KrbHostFQDN=Nome_do_dominio;KrbServiceName=Nome_do_serviço;
odbc:DRIVER={Simba Spark ODBC Driver};Host=Nome_servidor;Port=Numero_da_porta;AuthMech=1;KrbRealm=Domínio_(Realm);KrbHostFQDN=Nome_do_dominio;KrbServiceName=Nome_do_serviço;
Nome de Usuário
odbc:DRIVER={Simba Hive ODBC Driver};Host=Servidor;Port=Numero_da_porta;AuthMech=2;UID=Nome_do_usuario;
odbc:DRIVER={Simba Impala ODBC Driver};Host=Servidor;Port=Numero_da_porta;AuthMech=2;UID=Nome_do_usuario;
odbc:DRIVER={Simba Spark ODBC Driver};Host=Servidor;Port=Numero_da_porta;AuthMech=2;UID=Nome_do_usuario;
Usuário e senha
odbc:DRIVER={Simba Hive ODBC Driver};Host=Servidor;Port=Numero_da_porta;AuthMech=3;UID=Nome_do_usuario;PWD=Senha;
odbc:DRIVER={Simba Impala ODBC Driver};Host=Servidor;Port=Numero_da_porta;AuthMech=3;UID=Nome_do_usuario;PWD=Senha;
odbc:DRIVER={Simba Spark ODBC Driver};Host=Servidor;Port=Numero_da_porta;AuthMech=3;UID=Nome_do_usuario;PWD=Senha;
Parâmetros opcionais podem ser necessários de se adicionar na string de conexão caso configurado para utilizar ServerType, SSL, e ThriftTransport.
Conexão ODBC para Oracle
Simba odbc:DRIVER={Simba Oracle ODBC Driver};Host=Servidor;Port=Numero_da_porta;SVC=DBService;UID=Usuario;PWD=Senha; Oracle driver odbc:DRIVER={Oracle in OraDB12Home1};Dbq=Nome_Alias_no_TNS;UID=Usuario;PWD=senha
String de conexão OCI para Oracle (conhecido como EZCONNECT - sem necessidade do arquivo TNSnames.ora)
oci:usuario/senha@servidor:numero_da_porta/nome_do_serviço
Usando TNS Entry Syntax para conexão DSN-less
oci:usuario/senha@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=servidor)(PORT = 1521)))(CONNECT_DATA=(SERVICE_NAME=nome_do_serviço)))
Mesma TNS Entry para Oracle usando SSL/TLS
(Essa é uma boa alternativa caso precise utilizar o protocolo TCPS para conexão DSN-les
oci:usuarios/senha@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCPS)(HOST=servidor1.xyz)(PORT=9999))(ADDRESS=(PROTOCOL=TCPS)(HOST=servidor2.xyz)(PORT=9999))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=nome_do_serviço.xyz))(SECURITY=(MY_WALLET_DIRECTORY=C:\app\client\Admin\product\12.1.0\client_1\Network\Admin\Wallet)(SSL_VERSION=1.2)(SSL_CLIENT_AUTHENTICATION=FALSE)))