Compartilhar via


Recursos incompatíveis do Access (AccessToSQL)

Nem todos os recursos de banco de dados do Access são compatíveis com o SQL Server. Por exemplo, o SQL Server e o Access têm conjuntos diferentes de palavras-chave reservadas. Problemas como esses podem impedir uma migração bem-sucedida para o SQL Server. Use a tabela a seguir para saber mais sobre possíveis problemas de migração e o que você pode fazer em relação a eles.

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

Configuração ou recurso do banco de dados do Access Problema de migração
As tabelas do Access não têm índices exclusivos. Se uma tabela que não tem um índice exclusivo é migrada para o SQL Server, você não poderá modificá-la após a migração. Isso pode levar a problemas de compatibilidade de aplicações.

Quando você converte objetos de banco de dados do Access, a Janela de Saída listará 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, confira Configurações do projeto (Conversão).
As tabelas do Access têm colunas de replicação. Se uma tabela do Access que inclui colunas do sistema de replicação for migrada para o SQL Server, a funcionalidade de replicação do Jet será interrompida após a migração.

Após a migração, considere usar a replicação do SQL Server para manter cópias sincronizadas dos bancos de dados.
As tabelas do Access que têm índices exclusivos contêm vários valores nulos. Antes da 8.13, as tabelas do Access que têm índices exclusivos com uma multiplicidade de valores nulos não podem ser transferidas para o SQL Server, porque no SQL Server, os índices exclusivos não permitem uma multiplicidade de valores nulos. A migração falhará para essas tabelas.

A SSMA sinalizará esse problema nos 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, você deve certificar-se de que a chave primária não tem valores nulos duplicados. Ou, você deve remover a chave primária ou índices exclusivos que contêm uma multiplicidade valores nulos.
As tabelas do Access contêm valores de data que estão fora do intervalo do SQL Server. O tipo datetime do SQL Server aceita apenas datas no intervalo de 1 Jan 1753 a 31 de Dez 9999 apenas. O acesso aceita datas no intervalo de 1 Jan 100 a 31 de Dez 9999.

A SSMA sinalizará esse problema nos 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, confira Configurações do projeto (Migração).
A duração do índice no Access 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 grandes, o SSMA exibirá um aviso.

Se você continuar com a migração de dados, a migração poderá falhar.
Os nomes de objeto do Access 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 aceitará objetos nomeados usando palavras-chave do SQL Server ou que contenham caracteres especiais se você usar identificadores entre colchetes ou entre aspas, como "select" ou [select].p. Para obter mais informações, confira “Identificadores delimitados” (Mecanismo de banco de dados) nos Manuais Online do SQL Server.

NOTA: para usar aspas para delimitar identificadores, SET QUOTED_IDENTIFIER deve estar ON.

Por exemplo, CREATE TABLE [schema](c1 [FOR]) é uma instrução válida, mesmo que schema e FOR sejam palavras-chave reservadas. Além disso, CREATE TABLE [xxx*yyy](c1 x&y) é uma instrução válida, mesmo que o nome da tabela e da coluna contenham os caracteres especiais #42; 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 falhará. 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 dimensionamentos de campo diferem nas relações de chave primária/chave estrangeira. O SQL Server não oferece suporte à funcionalidade do Jet de vincular colunas que têm diferentes tipos de dados ou dimensionamento com restrições de chave estrangeira.

Quando você converte objetos de banco de dados do Access, a Janela de Saída listará todas as restrições de chave primária/chave estrangeira que não serão convertidas em SQL Server. Você pode alterar tipos e dimensionar dados em colunas do Access para que eles correspondam e, em seguida, remover e adicionar novamente o banco de dados do Access. Ou, você pode migrar dados, embora essas restrições não serão criadas no SQL Server.
As tabelas referenciadas nas relações do Access não têm uma chave primária nem um índice exclusivo. O Access aceita a relação entre tabelas em que a tabela referenciada não tem uma chave primária ou um índice exclusivo. No entanto, isso não é compatível com o SQL Server.

Quando você converte objetos de banco de dados do Access, a Janela de 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 novamente o banco de dados do Access. Ou, você pode migrar dados embora a relação entre as tabelas será interrompida.
As tabelas do Access têm colunas de hiperlink. O SQL Server não é compatível com colunas de hiperlink. Em vez disso, as coluna são tratadas como colunas de memorando do Access. Por padrão, essas colunas serão convertidas em colunas nvarchar(max) no SQL Server. Você pode personalizar o mapeamento. Para obter mais informações, consulte Mapeamento de tipos de dados de origem e de destino.
As expressões de regra padrão ou de validação contêm funções do Access que não podem ser convertidas em SQL Server ou SQL Azure. As expressões padrão do Access ou as regras de validação podem incluir funções do sistema do Access ou funções definidas pelo usuário que não são mapeadas para o SQL Server ou o SQL Azure. Usar funções que não são mapeadas para o SQL Server ou o SQL Azure impedirá que você carregue as expressões padrão ou as regras de validação no SQL Server ou no SQL Azure.

Confira também

Preparar bancos de dados do Access para migração
Migrar bancos de dados do Access para o SQL Server