Compartilhar via


Recursos incompatíveis do Access (AccessToSQL)

Nem todos os recursos do banco de dados do Access funcionam com o SQL Server. Por exemplo, o SQL Server e o Access usam diferentes conjuntos de palavras-chave reservadas. Essas diferenças podem causar problemas ao migrar usando o SSMA (Assistente de Migração do SQL Server). A seção a seguir descreve possíveis problemas de migração e como você pode corrigi-los.

Configurações de banco de dados ou recursos que podem afetar a migração

Examine as seguintes configurações ou recursos do Access que podem afetar a migração para o SQL Server ou o SQL do Azure.

As tabelas não têm índices exclusivos

Se você migrar uma tabela sem um índice exclusivo para o SQL Server, não poderá modificar a tabela após a migração. Essa limitação pode causar problemas de compatibilidade do aplicativo.

Quando você converte objetos de banco de dados do Access, a janela Saída lista todas as tabelas do Access que não têm índices exclusivos.

Você pode configurar o Access para adicionar uma chave primária na tabela do SQL Server durante a conversão. Para obter mais informações, consulte Configurações do Projeto (Conversão).

Tabelas têm colunas de replicação

Se você migrar uma tabela do Access que inclui colunas do sistema de replicação para o SQL Server, a funcionalidade de replicação do Jet deixará de funcionar após a migração.

Após a migração, considere usar a replicação do SQL Server para manter cópias sincronizadas de seus bancos de dados.

Tabelas com índices exclusivos contêm vários valores NULL

Antes da versão 8.13, você não pode transferir tabelas do Access que tenham índices exclusivos com vários valores nulos para o SQL Server. No SQL Server, índices exclusivos não permitem vários nulos. A migração falha para essas tabelas.

O SSMA sinaliza esse problema em relatórios de avaliação. Para criar um relatório de avaliação, consulte Avaliar objetos de banco de dados do Access para conversão.

Se esse problema existir, verifique se a chave primária não tem valores nulos duplicados. Ou remova a chave primária ou índices exclusivos que contêm vários valores nulos.

As tabelas contêm valores de data que estão fora do intervalo do SQL Server

O tipo de datetime do SQL Server aceita datas no intervalo de 1º de janeiro de 1753 até 31 de dezembro de 9999, somente. O Access aceita datas no intervalo de 1º de janeiro de 100 a 31 de dezembro de 9999.

O SSMA sinaliza esse problema em relatórios de avaliação. Para criar um relatório de avaliação, consulte Avaliar objetos de banco de dados do Access para conversão.

Você pode configurar como o SSMA resolve datas que estão fora do intervalo do SQL Server. Para obter mais informações, consulte Configurações do Projeto (Migração).

Comprimentos de índice excedem 900 bytes

Os índices do SQL Server têm um limite de 900 bytes para o tamanho total das colunas de chave de índice. Se as tabelas do Access usarem índices maiores, o SSMA exibirá um aviso.

Se você continuar com a migração de dados, a migração poderá falhar.

Os nomes de objeto são palavras-chave do SQL Server ou contêm caracteres especiais

O Access e o SQL Server têm diferentes conjuntos de palavras-chave reservadas e caracteres especiais. O SQL Server aceita objetos nomeados usando palavras-chave do SQL Server ou que contêm caracteres especiais se você usar identificadores entre colchetes ou entre aspas, como select ou [select].p. Para obter mais informações, consulte Identificadores de banco de dados.

Observação

Para usar aspas para delimitar identificadores, SET QUOTED_IDENTIFIER deve ser ON.

Por exemplo, CREATE TABLE [schema](c1 [FOR]) é uma instrução válida, embora schema e FOR sejam palavras-chave reservadas. Além disso, CREATE TABLE [xxx*yyy](c1 x&y) é uma instrução válida, embora a tabela e o nome da coluna contenham os caracteres * especiais e &.

Todas as consultas que fazem referência a esses objetos também devem usar os nomes com colchetes ou aspas. Por exemplo, a consulta SELECT * FROM schema falha. A consulta correta é: SELECT * FROM [schema].

Quando você converte objetos de banco de dados do Access, o painel Saída lista todas as tabelas do Access que usam palavras-chave ou caracteres especiais. Você pode modificar as tabelas no Access e, em seguida, remover e adicionar o banco de dados novamente. Ou você pode modificar consultas que fazem referência a esses objetos para que as consultas usem colchetes ou aspas para delimitar identificadores. Se você não modificar suas consultas, seus aplicativos do Access poderão retornar erros ou ter outros problemas.

Os tamanhos de campo diferem nas relações de chave primária ou chave estrangeira

O SQL Server não dá suporte à funcionalidade Jet de vincular colunas que têm diferentes tipos de dados ou tamanhos com restrições de chave estrangeira.

Quando você converte objetos de banco de dados do Access, a janela Saída lista todas as restrições de chave primária ou chave estrangeira que não são convertidas no SQL Server. Você pode alterar tipos de dados e tamanhos em colunas do Access para que elas correspondam e, em seguida, remova e adicione o banco de dados do Access novamente. Ou você pode migrar dados, embora essas restrições não sejam criadas no SQL Server.

As tabelas referenciadas não têm uma chave primária ou um índice exclusivo

O Access aceita relações entre tabelas em que a tabela referenciada não tem uma chave primária ou um índice exclusivo. No entanto, o SQL Server não dá suporte a esse tipo de relação.

Quando você converte objetos de banco de dados do Access, a janela Saída lista todas as tabelas que têm relações, mas nenhuma chave primária ou índice exclusivo. Você pode alterar as tabelas para adicionar chaves primárias ou índices exclusivos e, em seguida, remover e adicionar o banco de dados do Access novamente. Ou você pode migrar dados, embora a relação entre as tabelas esteja interrompida.

O SQL Server não dá suporte a colunas de hiperlink . Em vez disso, as colunas são tratadas como colunas de memorando do Access. Por padrão, essas colunas são convertidas em colunas nvarchar(max) no SQL Server. Você pode personalizar o mapeamento. Para obter mais informações, consulte Os tipos de dados de origem e de destino do mapa.

As funções não podem ser convertidas no SQL Server ou no SQL do Azure

As expressões padrão ou regras de validação do Access podem incluir funções do sistema ou funções definidas pelo usuário que não são compatíveis com SQL Server ou Azure SQL. Se você usar funções que não são mapeadas para SQL Server ou SQL do Azure, não poderá carregar as expressões padrão ou as regras de validação no SQL Server ou no SQL do Azure.