Como vincular aplicativos do Access ao SQL Server - Banco de dados SQL do Azure (AccessToSQL)
Se quiser usar seus aplicativos do Access existentes com o SQL Server, você poderá vincular suas tabelas originais do Access às tabelas migradas do SQL Server ou do SQL do Azure. A vinculação modifica seu 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, convém excluir as tabelas do Access.
Vincular tabelas do Access e do SQL Server
Quando você vincula uma tabela do Access a uma tabela do SQL Server ou do SQL do Azure, o mecanismo de banco de dados do 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 os 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 não criptografado nas tabelas vinculadas do Access. Recomendamos usar a autenticação do Windows.
Vincular tabelas
No Access Metadata Explorer, selecione as tabelas que você deseja vincular.
Clique com o botão direito do mouse em Tabelas e selecione Vincular.
O Assistente de Migração do SQL Server (SSMA) para Access faz backup da tabela original do Access e cria uma tabela vinculada.
Depois de vincular as tabelas, as tabelas no SSMA aparecem com um pequeno ícone de link. 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 teclas. Como resultado, para tabelas grandes, todos os dados não são recuperados de uma só vez. No entanto, à medida que você navega pela tabela, o Access recupera dados adicionais, conforme necessário.
Importante
Para vincular tabelas de acesso a um banco de dados do Azure, você precisa do SQL Server Native Client (SNAC) versão 10.5 ou superior.
É possível obter a última versão do SNAC no Microsoft® SQL Server 2008 R2 Feature Pack.
Desvincular tabelas do Access
Quando você desvincula uma tabela do Access de uma tabela do SQL Server ou do SQL do Azure, o SSMA restaura a tabela original do Access e seus dados.
Desvincular tabelas
No Access Metadata Explorer, selecione as tabelas que deseja desvincular.
Clique com o botão direito do mouse em Tabelas e selecione Desvincular.
Vincular tabelas a outro servidor
Caso tenha vinculado as tabelas do Access a uma instância do SQL Server e, posteriormente, deseje alterar os links para outra instância, você deverá vincular novamente as tabelas.
Vincular tabelas a outro servidor
No Access Metadata Explorer, selecione as tabelas que deseja desvincular.
Clique com o botão direito do mouse em Tabelas e selecione Desvincular.
Clique no botão Reconectar ao SQL Server.
Conecte-se à instância do SQL Server ou do SQL do Azure à qual você deseja vincular as tabelas do Access.
No Access Metadata Explorer, selecione as tabelas que você deseja vincular.
Clique com o botão direito do mouse em Tabelas e selecione Vincular.
Atualizar tabelas vinculadas
Se as definições de tabela do SQL Server ou do SQL do Azure forem alteradas, você poderá desvincular e vincular novamente as tabelas no SSMA usando os procedimentos mostrados anteriormente neste tópico. Você também pode atualizar as tabelas usando o Access.
Para atualizar as tabelas vinculadas usando o Access
Abra o banco de dados do Access.
Na lista Objetos, clique em Tabelas.
Clique com o botão direito do mouse em uma tabela vinculada e selecione Gerenciador de Tabelas Vinculadas.
Marque a caixa de seleção ao lado de cada tabela vinculada que você deseja atualizar e clique em OK.
Possíveis problemas pós-migração
As seções a seguir listam problemas que podem ocorrer em aplicativos existentes do Access após a migração de bancos de dados do Access para o SQL Server ou SQL do Azure e, em seguida, vinculam as tabelas, juntamente com as causas e as resoluções.
Desempenho lento com tabelas vinculadas
Causa: algumas consultas podem ficar lentas após o upsizing pelos seguintes motivos:
O aplicativo depende de funções que não existem no SQL Server ou no SQL do Azure, o que faz com que o Jet extraia tabelas localmente para executar uma consulta SELECT.
As consultas que atualizam ou excluem muitas linhas são enviadas pelo Jet 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 passagem tem os seguintes problemas:
As consultas passagem não podem ser modificadas. A modificação do resultado da consulta ou a adição de novos registros deve ser feita de maneira alternativa, como ter botões Modificar ou Adicionar explícitos no formulário vinculado à consulta.
Algumas consultas exigem entrada de usuário, mas as consultas de passagem não oferecem suporte à entrada de usuário. A entrada de usuário pode ser obtida pelo código VBA (Visual Basic for Applications) que solicita parâmetros ou por um formulário que é usado como um controle de entrada. Em ambos os casos, o código VBA envia a consulta com a entrada de usuário para o servidor.
As colunas de incremento automático não são atualizadas até que o registro seja atualizado
Causa: depois de chamar RecordSet.AddNew no Jet, a coluna de incremento automático ficará disponível antes que o registro seja atualizado. Isso não é verdade no SQL Server ou no SQL do Azure. O novo valor do novo valor da coluna de identidade estará disponível somente depois de salvar o novo registro.
Resolução: execute o seguinte código do VBA (Visual Basic for Applications) antes de acessar o campo de identidade:
Recordset.Update
Recordset.Move 0,
Recordset.LastModified
Não há novos registros disponíveis
Causa: quando você adiciona um registro a uma tabela do SQL Server ou do 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 aparecerá até que você reabra a tabela no SQL Server ou no SQL do Azure. Se tentar obter um valor do novo registro, você receberá a seguinte mensagem de erro:
Run-time error '3167' Record is deleted.
Resolução: ao abrir a tabela do SQL Server ou do 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 permitirão 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.
Não é possível modificar um esquema de tabela vinculada com o Access
Causa: depois de migrar dados e vincular tabelas, o usuário não poderá 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.
A funcionalidade de hiperlink é perdida após a migração de dados
Causa: após a migração de dados, os hiperlinks em colunas perdem sua funcionalidade e se tornam colunas nvarchar(max) simples.
Resolução: Nenhum.
Alguns tipos de dados do SQL Server não são compatíveis com o Access
Causa: se você atualizar posteriormente suas tabelas do SQL Server ou do SQL do Azure para conter tipos de dados que não são suportados pelo Access, não poderá abrir a tabela no Access.
Resolução: você pode definir uma consulta do Access que retorne apenas as linhas com tipos de dados com suporte.