Compartilhar via


Vincular aplicativos do Access ao SQL Server e ao SQL do Azure (AccessToSQL)

Se você quiser usar seus aplicativos do Access existentes com o SQL Server, poderá vincular suas tabelas originais do Access às tabelas SQL Server ou SQL do Azure migradas. A vinculação modifica o banco de dados do Access para que suas consultas, formulários, relatórios e páginas de acesso a dados usem os dados no SQL Server ou no Banco de Dados SQL do Azure em vez dos dados no banco de dados do Access.

Observação

Suas tabelas do Access permanecem no Access, mas não são atualizadas junto com as atualizações do SQL Server ou do SQL do Azure. Depois de vincular as tabelas e verificar a funcionalidade, talvez você queira excluir suas tabelas do Access.

Quando você vincula uma tabela do Access a uma tabela SQL Server ou SQL do Azure, o mecanismo de banco de dados Jet armazena informações de conexão e metadados de tabela, mas os dados são armazenados no SQL Server ou no SQL do Azure. Essa vinculação permite que seus aplicativos do Access operem nas tabelas do Access, mesmo que as tabelas e dados reais estejam no SQL Server ou no SQL do Azure.

Observação

Se você usar a Autenticação do SQL Server, sua senha será armazenada em texto claro nas tabelas vinculadas do Access. Em vez disso, use a autenticação do Windows.

  1. No Gerenciador de Metadados do Access, selecione as tabelas que você deseja vincular.

  2. Clique com o botão direito do mouse em Tabelas e selecione Link.

O SSMA (Assistente de Migração do SQL Server) para Access faz backup da tabela original do Access e cria uma tabela vinculada.

Depois de vincular as tabelas, as tabelas no SSMA aparecerão com um ícone de link pequeno. No Access, as tabelas aparecem com um ícone "vinculado", que é um globo com uma seta apontando para ele.

Quando você abre uma tabela no Access, os dados são recuperados usando um cursor de conjunto de chaves. Como resultado, para tabelas grandes, os dados não são recuperados de uma só vez. No entanto, à medida que você navega pela tabela, o Access recupera mais dados conforme necessário.

Importante

Para vincular tabelas do Access a um banco de dados do Azure, você precisa do SNAC (SQL Server Native Client) versão 10.5 ou posterior. Obtenha a versão mais recente do SNAC do Microsoft SQL Server 2008 R2 Feature Pack. O SNAC foi removido no SQL Server 2022 (16.x).

Quando você desvincula uma tabela do Access de uma tabela SQL Server ou SQL do Azure, o SSMA restaura a tabela original do Access e seus dados.

  1. No Gerenciador de Metadados do Access, selecione as tabelas que você deseja desvincular.

  2. Clique com o botão direito do mouse em Tabelas e selecione Desvincular.

Se você vincular as tabelas do Access a uma instância do SQL Server e, posteriormente, quiser alterar os links para outra instância, será necessário revincular as tabelas.

  1. No Gerenciador de Metadados do Access, selecione as tabelas que você deseja desvincular.

  2. Clique com o botão direito do mouse em Tabelas e selecione Desvincular.

  3. Selecione o botão Reconectar ao SQL Server .

  4. Conecte-se à instância do SQL Server ou do SQL do Azure à qual você deseja vincular as tabelas do Access.

  5. No Gerenciador de Metadados do Access, selecione as tabelas que você deseja vincular.

  6. Clique com o botão direito do mouse em Tabelas e selecione Link.

Atualizar tabelas vinculadas

Se você alterar as definições de tabela SQL Server ou SQL do Azure, poderá desvincular e revincular as tabelas no SSMA usando os procedimentos mostrados anteriormente neste artigo. Você também pode atualizar as tabelas usando o Access.

  1. Abra o banco de dados do Access.

  2. Na lista Objetos , selecione Tabelas.

  3. Clique com o botão direito do mouse em uma tabela vinculada e selecione Gerenciador de Tabelas Vinculado.

  4. Marque a caixa de seleção ao lado de cada tabela vinculada que você deseja atualizar e selecione OK.

Possíveis problemas pós-migração

As seções a seguir listam problemas que podem ocorrer em aplicativos do Access existentes depois que você migra os bancos de dados do Access para o SQL Server ou o SQL do Azure e vincula as tabelas. As seções também descrevem as causas e resoluções para esses problemas.

Desempenho lento com tabelas vinculadas

Causa: algumas consultas podem ser lentas após a migração para um sistema maior pelos seguintes motivos:

  • O aplicativo depende de funções que não existem no SQL Server ou no SQL do Azure. O Jet carrega as tabelas localmente para executar uma SELECT consulta.

  • O Jet envia consultas que atualizam ou excluem muitas linhas como uma consulta parametrizada para cada linha.

Resolução: converta as consultas de execução lenta em consultas de passagem, procedimentos armazenados ou exibições. A conversão em consultas de passagem tem os seguintes problemas:

  • Você não pode modificar consultas de passagem. Você deve modificar o resultado da consulta ou adicionar novos registros de maneira alternativa. Por exemplo, você pode ter botões de Modificação ou Adição explícitos em seu formulário associados à consulta.

  • Consultas de passagem não dão suporte à entrada do usuário, mas algumas consultas exigem entrada do usuário. Você pode usar o Visual Basic for Applications (VBA) para solicitar parâmetros ou obter a entrada do usuário usando um formulário. Em ambos os casos, o código VBA envia a consulta com a entrada do usuário para o servidor.

As colunas de preenchimento automático não são atualizadas até que o registro seja atualizado

Causa: após a chamada RecordSet.AddNew no Jet, a coluna de preenchimento automático está disponível antes que o registro seja atualizado. Essa condição não é verdadeira no SQL Server ou no SQL do Azure. O novo valor da coluna de identidade só está disponível depois de salvar o novo registro.

Resolução: execute o seguinte código do Visual Basic for Applications (VBA) antes de acessar o campo de identidade:

Recordset.Update
Recordset.Move 0,
Recordset.LastModified

Novos registros não estão disponíveis

Causa: quando você adiciona um registro a uma tabela SQL Server ou SQL do Azure usando o VBA, se o campo de índice exclusivo da tabela tiver um valor padrão e você não atribuir um valor a esse campo, o novo registro não será exibido até que você reabra a tabela no SQL Server ou no SQL do Azure. Se você tentar obter um valor do novo registro, receberá a seguinte mensagem de erro:

Run-time error '3167' Record is deleted.

Resolução: ao abrir a tabela SQL Server ou SQL do Azure usando o código VBA, inclua a opção dbSeeChanges , como no exemplo a seguir:

Set rs = db.OpenRecordset("TestTable", dbOpenDynaset, dbSeeChanges)

Após a migração, algumas consultas não permitem que o usuário adicione um novo registro

Causa: se uma consulta não incluir todas as colunas incluídas em um índice exclusivo, você não poderá adicionar novos valores usando a consulta.

Resolução: verifique se todas as colunas incluídas em pelo menos um índice exclusivo fazem parte da consulta.

Você não pode modificar um esquema de tabela vinculada usando o Access

Causa: depois de migrar dados e vincular tabelas, você não pode modificar o esquema de uma tabela no Access.

Resolução: modifique o esquema de tabela usando o SQL Server Management Studio e atualize o link no Access.

Causa: depois que os dados são migrados, os hiperlinks em colunas perdem a funcionalidade e se tornam colunas nvarchar(max) simples.

Resolução: Nenhuma.

O Access não dá suporte a alguns tipos de dados do SQL Server

Causa: se você atualizar suas tabelas SQL Server ou SQL do Azure para incluir tipos de dados que o Access não dá suporte, não será possível abrir a tabela no Access.

Resolução: defina uma consulta do Access que retorna apenas linhas com tipos de dados compatíveis.