Referência técnica genérica do Conector SQL

Este artigo descreve o Conector SQL Genérico. O artigo aplica-se aos seguintes produtos:

Por MIM2016, o Conector está disponível como transferência a partir do Centro de Transferências da Microsoft.

Para ver este Conector em ação, veja o artigo Passo a passo do Conector SQL Genérico .

Nota

Microsoft Entra ID agora fornece uma solução baseada em agente simples para aprovisionar utilizadores numa base de dados SQL, sem precisar de uma implementação de sincronização do MIM. Recomendamos que o utilize para o aprovisionamento de utilizadores de saída. Saiba mais.

Descrição geral do Conector SQL Genérico

O Conector SQL Genérico permite-lhe integrar o serviço de sincronização com um sistema de bases de dados que oferece conectividade ODBC.

De uma perspetiva de alto nível, as seguintes funcionalidades são suportadas pela versão atual do conector:

Funcionalidade Suporte
Origem de dados ligada O Conector é suportado com todos os controladores ODBC de 64 bits*. Foi testado com o seguinte:
  • Microsoft SQL Server & SQL Azure
  • IBM DB2 11.5.8
  • Oracle 11g
  • Oracle 12c e 18c
  • Oracle 21c e 23c
  • MySQL 5.x
  • MySQL 8.x
  • Postgres
  • Cenários
  • Gestão do Ciclo de Vida do Objeto
  • Gestão de palavra-passe
  • Operações
  • Importação Completa e Importação Delta, Exportação
  • Para Exportação: Adicionar, Eliminar, Atualizar e Substituir
  • Definir Palavra-passe, Alterar Palavra-passe
  • Esquema
  • Deteção dinâmica de objetos e atributos
  • Pré-requisitos

    Antes de utilizar o Conector, certifique-se de que tem o seguinte no servidor de sincronização:

    • Microsoft .NET 4.6.2 Framework ou posterior
    • Controladores de cliente ODBC de 64 bits
    • Se estiver a utilizar o conector para comunicar com o Oracle 12c, isto requer o Oracle Instant Client 12.2.0.1 ou mais recente com o pacote ODBC.
    • Se estiver a utilizar o conector para comunicar com o Oracle 18c-23c, isto requer o Oracle Instant Client 18-23 ou mais recente com o Pacote ODBC e a variável de sistema NLS_LANG a ser definida para suportar carateres UTF8, por exemplo, NLS_LANG=AMERICAN_AMERICA. AL32UTF8.
    • Este conector utiliza instruções preparadas para SQL e várias instruções por transação. Alguns sistemas RDBM podem ter problemas nos controladores ODBC relacionados com o processamento de transações, instruções SQL preparadas do lado do servidor e várias instruções na mesma transação. Configure as opções de ligação DSN em conformidade para garantir que essas instruções são enviadas corretamente para a base de dados. Por exemplo, o Controlador ODBC MySQL versão 8.0.32 necessita de opções NO_SSPS=1 e MULTI_STATEMENTS=1. Outras opções, como "consolidação automática" ou "consolidar apenas em operações com êxito" podem afetar a forma como as exportações de lotes são processadas; consulte o administrador da base de dados para obter detalhes. Para resolver problemas durante a exportação, defina o tamanho do lote de exportação como 1 e ative o registo verboso do conector.

    A implementação deste conector pode exigir alterações na configuração da base de dados, bem como alterações de configuração no MIM. Para implementações que envolvam a integração do MIM num servidor de bases de dados de terceiros num ambiente de produção, recomendamos que os clientes trabalhem com o fornecedor da base de dados ou com um parceiro de implementação para obter ajuda, orientação e suporte para esta integração.

    Permissões na origem de dados ligada

    Para criar ou executar qualquer uma das tarefas suportadas no conector SQL Genérico, tem de ter:

    • db_datareader
    • db_datawriter

    Portas e protocolos

    Para que as portas necessárias para o controlador ODBC funcionem, consulte a documentação do fornecedor da base de dados.

    Criar um novo Conector

    Para Criar um conector SQL Genérico, no Serviço de Sincronização , selecione Agente de Gestão e Criar. Selecione o Conector SQL Genérico (Microsoft ).

    Página 1 do CreateConnector

    Conectividade

    O Conector utiliza um ficheiro DSN ODBC para conectividade. Crie o ficheiro DSN com origens de dados ODBC encontradas no menu Iniciar em Ferramentas Administrativas. Na ferramenta administrativa, crie um DSN de Ficheiro para que possa ser fornecido ao Conector.

    Página 2 do CreateConnector

    O ecrã Conectividade é o primeiro quando cria um novo Conector SQL Genérico. Primeiro, tem de fornecer as seguintes informações:

    • Caminho do ficheiro DSN
    • Autenticação
      • Nome de Utilizador
      • Palavra-passe

    A base de dados deve suportar um destes métodos de autenticação:

    • Autenticação do Windows: a base de dados de autenticação utiliza as credenciais do Windows para verificar o utilizador. O nome de utilizador/palavra-passe especificado é utilizado para autenticar com a base de dados. Esta conta precisa de permissões para a base de dados.
    • Autenticação SQL: a base de dados de autenticação utiliza o nome de utilizador/palavra-passe definido no ecrã Conectividade para ligar à base de dados. Se armazenar o nome de utilizador/palavra-passe no ficheiro DSN, as credenciais fornecidas no ecrã Conectividade têm precedência.
    • autenticação da Base de Dados do SQL do Azure: para obter mais informações, veja Ligar ao Base de Dados SQL através da autenticação Microsoft Entra.

    O DN é Âncora: se selecionar esta opção, o DN também é utilizado como atributo de âncora. Pode ser utilizado para uma implementação simples, mas também tem a seguinte limitação:

    • O conector suporta apenas um tipo de objeto. Por conseguinte, quaisquer atributos de referência só podem referenciar o mesmo tipo de objeto.

    Tipo de Exportação: Substituição de Objeto: durante a exportação, quando apenas alguns atributos foram alterados, todo o objeto com todos os atributos é exportado e substitui o objeto existente.

    Esquema 1 (Detetar tipos de objeto)

    Nesta página, vai configurar a forma como o Conector vai encontrar os diferentes tipos de objeto na base de dados.

    Cada tipo de objeto é apresentado como uma partição e configurado ainda mais em Configurar Partições e Hierarquias.

    schema1a image

    Método de deteção de Tipo de Objeto: o Conector suporta estes métodos de deteção de tipo de objeto.

    • Valor Fixo: fornece a lista de tipos de objetos com uma lista separada por vírgulas. Por exemplo: User,Group,Department.
      imagem schema1b
    • Tabela/Ver/Procedimento Armazenado: indique o nome do procedimento de tabela/vista/armazenado e, em seguida, o nome da coluna que fornece a lista de tipos de objetos. Se utilizar um procedimento armazenado, forneça também parâmetros para o mesmo no formato [Nome]:[Direção]:[Valor]. Forneça cada parâmetro numa linha separada (utilize Ctrl+Enter para obter uma nova linha).
      imagem schema1c
    • Consulta SQL: esta opção permite-lhe fornecer uma consulta SQL que devolve uma única coluna com tipos de objeto, por exemplo SELECT [Column Name] FROM TABLENAME. A coluna devolvida tem de ser do tipo cadeia (varchar).

    Esquema 2 (Detetar tipos de atributo)

    Nesta página, vai configurar a forma como os nomes e tipos de atributos serão detetados. As opções de configuração são listadas para cada tipo de objeto detetado na página anterior.

    schema2a image

    Método de deteção de Tipo de Atributo: o Conector suporta estes métodos de deteção de tipo de atributo com cada tipo de objeto detetado no ecrã Esquema 1.

    • Tabela/Ver/Procedimento Armazenado: indique o nome do procedimento de tabela/vista/armazenado que deve ser utilizado para localizar os nomes dos atributos. Se utilizar um procedimento armazenado, forneça também parâmetros para o mesmo no formato [Nome]:[Direção]:[Valor]. Forneça cada parâmetro numa linha separada (utilize Ctrl+Enter para obter uma nova linha). Para detetar os nomes de atributos num atributo de valores múltiplos, forneça uma lista separada por vírgulas de Tabelas ou Vistas. Os cenários de valores múltiplos não são suportados quando a tabela principal e subordinada tem os mesmos nomes de coluna.
    • Consulta SQL: esta opção permite-lhe fornecer uma consulta SQL que devolve uma única coluna com nomes de atributos, por exemplo SELECT [Column Name] FROM TABLENAME. A coluna devolvida tem de ser do tipo cadeia (varchar).

    Esquema 3 (Definir âncora e DN)

    Esta página permite-lhe configurar o atributo de ancoragem e DN para cada tipo de objeto detetado. Pode selecionar múltiplos atributos para tornar a âncora exclusiva.

    imagem schema3a

    • Os atributos de valores múltiplos e Booleanos não estão listados.

    • O mesmo atributo não pode ser utilizado para DN e âncora, a menos que O DN seja Âncora está selecionado na página Conectividade.

    • Se O DN for Âncora estiver selecionado na página Conectividade, esta página requer apenas o atributo DN. Este atributo também seria utilizado como atributo de âncora.

      imagem schema3b

    Esquema 4 (Definir tipo de atributo, referência e direção)

    Esta página permite-lhe configurar o tipo de atributo, como número inteiro, binário ou Booleano e direção para cada atributo. Todos os atributos do esquema de página 2 estão listados, incluindo atributos de valores múltiplos.

    imagem schema4a

    • DataType: utilizado para mapear o tipo de atributo para os tipos conhecidos pelo motor de sincronização. A predefinição é utilizar o mesmo tipo que foi detetado no esquema SQL, mas DateTime e Reference não são facilmente detetáveis. Para estes, tem de especificar DateTime ou Reference.
    • Direção: pode definir a direção do atributo como Importar, Exportar ou ImportarExportar. ImportExport é a predefinição.

    imagem schema4b

    Notas:

    • Se um tipo de atributo não for detetável pelo Conector, utiliza o tipo de dados Cadeia.
    • As tabelas aninhadas podem ser consideradas tabelas de base de dados de uma coluna. O Oracle armazena as linhas de uma tabela aninhada numa ordem específica. No entanto, quando obtém a tabela aninhada numa variável PL/SQL, as linhas recebem subscripts consecutivos a partir de 1. Isto dá-lhe acesso de matriz a linhas individuais.
    • O VARRYS não é suportado no conector.

    Esquema 5 (Definir partição para atributos de referência)

    Nesta página, vai configurar para todos os atributos de referência a que partição (tipo de objeto) um atributo se refere.

    imagem schema5

    Se utilizar O DN é âncora, tem de utilizar o mesmo tipo de objeto a partir do qual se está a referir. Não é possível referenciar outro tipo de objeto.

    Nota

    A partir da atualização de março de 2017, existe agora uma opção para "*" Quando esta opção é escolhida, todos os tipos de membros possíveis serão importados.

    imagem globalparameters3

    Importante

    A partir de maio de 2017, a opção "*" também conhecida como qualquer opção foi alterada para suportar o fluxo de importação e exportação. Se quiser utilizar esta opção, a sua tabela/vista de valores múltiplos deve ter um atributo que contenha o tipo de objeto.

    valor múltiplo de qualquer opção antes da imagem


    Se "*" estiver selecionado, o nome da coluna com o tipo de objeto também tem de ser especificado.
    valor múltiplo de qualquer opção após a imagem

    Após a importação, verá algo semelhante à imagem abaixo:

    imagem globalparameters31

    Parâmetros de Globais

    A página Parâmetros Globais é utilizada para configurar o método De importação, data/hora delta e palavra-passe.

    imagem globalparameters1

    O Conector SQL Genérico suporta os seguintes métodos para a Importação Delta:

    • Acionador: veja Gerar Vistas Delta com Acionadores.
    • Marca d'água: uma abordagem genérica que pode ser utilizada com qualquer base de dados. A consulta de marca d'água é pré-preenchida com base no fornecedor da base de dados. Tem de estar presente uma coluna de marca d'água em todas as tabelas/vistas utilizadas. Esta coluna tem de controlar inserções e atualizações para as tabelas como e as respetivas tabelas dependentes (com valores múltiplos ou subordinados). Os relógios entre o Serviço de Sincronização e o servidor de bases de dados têm de ser sincronizados. Caso contrário, algumas entradas na importação delta podem ser omitidas.
      Limitação:
      • A estratégia de marca d'água não suporta objetos eliminados.
    • Instantâneo: (Funciona apenas com o Microsoft SQL Server) Gerar Vistas Delta com Instantâneos
    • Controlo de Alterações: (Funciona apenas com o Microsoft SQL Server) Sobre Controlo de Alterações
      Limitações:
      • Âncora & atributo DN tem de fazer parte da chave primária para o objeto selecionado na tabela.
      • A consulta SQL não é suportada durante a Importação e Exportação com Controlo de Alterações.

    Parâmetros Adicionais: especifique o Fuso Horário do Servidor de Bases de Dados que indica onde está localizado o servidor de Bases de Dados. Este valor é utilizado para suportar os vários formatos de atributos de data & hora.

    O Conector armazena sempre a data e a data/hora no formato UTC. Para poder converter corretamente a data e as horas, tem de especificar o fuso horário do servidor de bases de dados e o formato utilizado. O formato deve ser expresso no formato .NET.

    Durante a exportação, todos os atributos de data e hora têm de ser fornecidos ao Conector no formato de hora UTC.

    imagem globalparameters2

    Configuração da Palavra-passe: o conector fornece capacidades de sincronização de palavras-passe e suporta a definição e alteração de palavra-passe.

    O Conector fornece dois métodos para suportar a sincronização de palavras-passe:

    • Procedimento Armazenado: este método requer dois procedimentos armazenados para suportar Definir & Alterar palavra-passe. Escreva todos os parâmetros para adicionar e alterar a operação de palavra-passe em Definir Palavra-passe SP e Alterar Parâmetros SP de Palavra-passe , respetivamente, de acordo com o exemplo abaixo. imagem globalparameters32
    • Extensão de Palavra-passe: este método requer a DLL da extensão de palavra-passe (tem de fornecer o Nome DLL da Extensão que está a implementar a interface IMAExtensible2Password ). A assemblagem da extensão de palavra-passe tem de ser colocada na pasta de extensão para que o conector possa carregar a DLL no runtime. imagem globalparameters4

    Também tem de ativar a Gestão de Palavras-passe na página Configurar Extensão . imagem globalparameters5

    Configurar Partições e Hierarquias

    Na página partições e hierarquias, selecione todos os tipos de objeto. Cada tipo de objeto é a sua própria partição.

    partições1 imagem

    Também pode substituir os valores definidos na página Conectividade ou Parâmetros Globais .

    imagem partitions2

    Configurar Âncoras

    Esta página é só de leitura, uma vez que a âncora já foi definida. O atributo de âncora selecionado é sempre anexado com o tipo de objeto para garantir que permanece exclusivo em todos os tipos de objetos.

    imagem de âncoras

    Configurar o Parâmetro do Passo de Execução

    Estes passos estão configurados nos perfis de execução no Conector. Estas configurações fazem o trabalho real de importação e exportação de dados.

    Importação Completa e Delta

    O Conector SQL Genérico suporta a Importação Completa e Delta com estes métodos:

    • Tabela
    • Vista
    • Procedimento Armazenado
    • Consulta SQL

    imagem runstep1

    Tabela/Vista
    Para importar atributos de valores múltiplos para um objeto, tem de indicar o nome da tabela/vista em Nome da tabela/vistas de Valores Múltiplos e as respetivas condições de associação na condição Associar à tabela principal. Se existirem mais de uma tabela com valores múltiplos na origem de dados, pode utilizar a união para uma única vista.

    Importante

    O agente de gestão do SQL Genérico só pode funcionar com uma tabela com valores múltiplos. Não coloque em Nome da tabela/vistas de Valores Múltiplos mais do que um nome da tabela. É a limitação do SQL Genérico.

    Exemplo: quer importar o objeto Employee e todos os atributos com valores múltiplos. Existem duas tabelas, denominadas Employee (tabela principal) e Department (multi-valued). Faça o seguinte:

    • Escreva Funcionário em Tabela/Vista/SP.
    • Escreva Departamento em Nome da tabela/vistas de Valores Múltiplos.
    • Escreva a condição de associação entre o Departamento de & Funcionários em Condição de Associação, por exemplo Employee.DEPTID=Department.DepartmentID. imagem runstep2

    Procedimentos armazenados
    imagem runstep3

    • Se tiver muitos dados, recomendamos que implemente a paginação com os Seus Procedimentos Armazenados.
    • Para que o Procedimento Armazenado suporte a paginação, tem de fornecer Índice de Início e Índice Final. Veja: Paginar de forma eficiente através de grandes quantidades de dados.
    • @StartIndex e @EndIndex são substituídos no momento da execução pelo respetivo valor de tamanho de página configurado na página Configurar Passo . Por exemplo, quando o conector obtém a primeira página e o tamanho da página é definido como 500, nesta situação @StartIndex seria 1 e @EndIndex 500. Estes valores aumentam quando o conector obtém páginas subsequentes e altera o @StartIndex valor & @EndIndex .
    • Para executar o Procedimento Armazenado parametrizado, forneça os parâmetros em [Name]:[Direction]:[Value] formato. Introduza cada parâmetro numa linha separada (Utilize Ctrl + Enter para obter uma nova linha).
    • O conector SQL genérico também suporta a operação de Importação a partir de Servidores Ligados no Microsoft SQL Server. Se as informações devem ser obtidas a partir de uma Tabela no servidor Ligado, a Tabela deve ser fornecida no formato: [ServerName].[Database].[Schema].[TableName]
    • O Conector SQL Genérico suporta apenas os objetos que têm uma estrutura semelhante (nome do alias e tipo de dados) entre as informações dos passos de execução e a deteção de esquema. Se o objeto selecionado do esquema e as informações fornecidas no passo de execução forem diferentes, o Conector SQL não conseguirá suportar este tipo de cenários.

    Consulta SQL
    imagem runstep4

    imagem runstep5

    Importante

    CRLF ou novo caráter de linha serve como separador entre múltiplas instruções.

    A consulta SQL de exemplo com paginação – consulta incorreta, não funcionará, uma vez que o novo caráter de linha é utilizado:

    WITH A AS 
      (select dense_rank() over (order by BusinessEntityID) 
        rownumber, BusinessEntityID, DeptID, NationalIDNumber, LoginID, JobTitle, BirthDate, MaritalStatus, HireDate, ModifiedDate, Password 
        from Employees
      ) select * from A where rownumber between @StartIndex and @EndIndex
    

    Consulta SQL de exemplo com paginação – consulta correta:

    WITH A AS (select dense_rank() over (order by BusinessEntityID) rownumber, BusinessEntityID, DeptID, NationalIDNumber, LoginID, JobTitle, BirthDate, MaritalStatus, HireDate, ModifiedDate, Password from Employees) select * from A where rownumber between @StartIndex and @EndIndex
    
    • Várias consultas de conjuntos de resultados não suportadas.
    • A consulta SQL suporta a paginação e fornece o Índice de Início e o Índice Final como uma variável para suportar a paginação.

    Importação Delta

    imagem runstep6

    A configuração da Importação Delta requer mais alguma configuração em comparação com a Importação Completa.

    • Se escolher a abordagem Acionador ou Instantâneo para controlar as alterações delta, forneça a Tabela do Histórico ou a base de dados Instantâneo na caixa Nome da tabela de histórico ou da base de dados instantâneo .
    • Também tem de fornecer condições de associação entre a tabela Histórico e a tabela Principal, por exemplo Employee.ID=History.EmployeeID
    • Para controlar a transação na tabela principal a partir da tabela do histórico, tem de indicar o nome da coluna que contém as informações da operação (Adicionar/Atualizar/Eliminar).
    • Se escolher Marca d'água para controlar as alterações delta, forneça o nome da coluna que contém as informações de operação no Nome da Coluna de Marca de Água.
    • A coluna de atributo Alterar Tipo é necessária para o tipo de alteração. Esta coluna mapeia uma alteração que ocorre na tabela primária ou na tabela de múltiplos valores para um tipo de alteração na vista delta. Esta coluna pode conter o tipo de alteração Modify_Attribute para alteração ao nível do atributo ou um tipo de alteração Adicionar, Modificar ou Eliminar para um tipo de alteração ao nível do objeto. Se for algo diferente do valor predefinido Adicionar, Modificar ou Eliminar, pode definir esses valores com esta opção.

    Exportar

    imagem runstep7

    O Conector SQL Genérico suporta a exportação com quatro métodos suportados, tais como:

    • Tabela
    • Vista
    • Procedimento Armazenado
    • Consulta SQL

    Tabela/Vista
    Se escolher a opção Tabela/Vista, o conector gera as respetivas consultas para efetuar a Exportação.

    Procedimentos armazenados
    imagem runstep8

    Se escolher a opção Procedimento Armazenado, a opção Exportar requer três procedimentos armazenados diferentes para efetuar operações inserir/atualizar/eliminar.

    • Adicionar Nome SP: este SP é executado se algum objeto chegar ao conector para inserção na respetiva tabela.
    • Atualizar Nome do SP: este SP é executado se algum objeto chegar ao conector para atualização na respetiva tabela.
    • Eliminar Nome SP: este SP é executado se algum objeto chegar ao conector para eliminação na respetiva tabela.
    • Atributo selecionado a partir do esquema utilizado como um valor de parâmetro para o procedimento armazenado. Por exemplo, @EmployeeName: INPUT: EmployeeName (EmployeeName está selecionado no esquema do conector e o conector substitui o respetivo valor ao exportar)
    • Para executar o procedimento armazenado parametrizado, forneça parâmetros em [Name]:[Direction]:[Value] formato. Introduza cada parâmetro numa linha separada (Utilize Ctrl + Enter para obter uma nova linha).

    Consulta SQL
    imagem runstep9

    Se escolher a opção de consulta SQL, a opção Exportar requer três consultas diferentes para efetuar operações Desativar/Atualizar/Eliminar.

    • Inserir Consulta: esta consulta é executada se algum objeto chegar ao conector para inserção na respetiva tabela.
    • Atualizar Consulta: esta consulta é executada se algum objeto chegar ao conector para atualização na respetiva tabela.
    • Eliminar Consulta: esta consulta é executada se algum objeto chegar ao conector para eliminação na respetiva tabela.
    • Atributo selecionado a partir do esquema utilizado como um valor de parâmetro para a consulta, por exemplo Insert into Employee (ID, Name) Values (@ID, @EmployeeName)

    Importante

    CRLF ou novo caráter de linha serve como separador entre múltiplas instruções.

    Consulta SQL de atualização de vários passos de exemplo – o novo caráter de linha é utilizado para separar as instruções SQL:

    update Employee set jobTitle=@JOBTITLE where BusinessEntityID=@BUSINESSENTITYID
    insert into ChangeLog VALUES (@BUSINESSENTITYID)
    

    Resolução de problemas