并非所有访问数据库功能都与SQL Server兼容。 例如,SQL Server和访问具有不同的保留关键字集。这些问题可能会阻止成功迁移到SQL Server。使用下表了解有关可能的迁移问题和如何应对这些信息。
数据库设置或可能会影响迁移的功能
访问数据库的设置或功能
|
迁移问题
|
访问表没有唯一索引。
|
如果不具有唯一索引的表迁移到SQL Server,迁移后,不能修改表。 这可能导致应用程序兼容性问题。
在转换访问数据库对象时,输出窗口将列出不具有唯一索引的任何访问表。
您可以配置访问上添加主键SQL Server转换期间的表。有关详细信息,请参阅项目设置 (转换)。
|
访问表具有复制的列。
|
如果包括复制系统列的 Access 表迁移到SQL Server,迁移后,Jet 复制功能将被破坏。
迁移后,请考虑使用SQL Server复制维护的数据库的同步的副本。
|
具有唯一索引访问表包含多个 null 值。
|
具有唯一索引与多个 null 值的访问表无法转移到SQL Server,因为在SQL Server,唯一索引不允许多个 null 值。这些表的情况下,迁移将会失败。
SSMA 会标记在评估报告此问题。若要创建评估报告,请参阅评估访问数据库对象的转换。
如果存在此问题,必须确保主键不具有重复的 null 值。或者,你必须删除 primary key 或包含多个 null 值的唯一索引。
|
访问表包含外出时的日期值SQL Server范围。
|
SQL Server Datetime类型接受范围 1 到 31 Dec 的 1753 年 1 月中日期仅 9999。访问接受到 31 年 12 月的 1 年 1 月 100年的范围中的日期到 9999。
SSMA 会标记在评估报告此问题。若要创建评估报告,请参阅评估访问数据库对象的转换。
你可以配置如何 SSMA 解决日期的是带SQL Server范围。有关详细信息,请参阅项目设置 (迁移)。
|
在访问索引长度超过 900 字节。
|
SQL Server索引的索引键列的总大小为 900 字节限制。如果你访问的表使用索引越大,SSMA 将显示一条警告。
如果继续进行数据迁移,迁移可能失败。
|
访问对象名称都SQL Server关键字,也不能包含特殊字符。
|
访问和SQL Server具有不同的保留的关键字和特殊字符。SQL Server 将接受使用命名的对象SQL Server关键字或包含特殊字符,如果使用带中括号或带引号的标识符,如"select"或 [选择].p。 有关详细信息,请参阅 》 中"带分隔符标识符 (数据库引擎)"SQL Server联机丛书。
注意:若要使用引号分隔标识符,SET QUOTED_IDENTIFIER 必须为 ON。
例如,Create TABLE [schema](c1 [FOR])是一个有效的语句,即使架构并为是保留的关键字。此外,Create TABLE [xxx*yyy](c1 x&y)是一个有效的语句,即使表和列名称包含特殊字符 * 并 & 。
引用这些对象的所有查询还必须使用括号或引号中都使用的名称。例如,以下查询Select * FROM schema将失败正确的查询是: Select * FROM [schema]。
在转换访问数据库对象时,输出窗格将列出使用关键字或特殊字符的任何访问表。您可以修改的表中的访问,然后删除并重新; 添加数据库或者,可以修改,以便查询使用括号或引号分隔标识符引用这些对象的查询。如果不修改您的查询,将 Access 应用程序可能会返回错误,或有其他问题。
|
主键/外键关系的不同字段大小。
|
SQL Server不支持链接具有不同的数据类型或大小与外键约束的列的 Jet 的功能。
在转换访问数据库对象时,输出窗口将列出不会转换为任何主/外键约束SQL Server。您可以更改数据类型和访问列的大小,以便它们匹配,然后删除并重新添加 Access 数据库。或者,您可以迁移数据,尽管这些约束不能中创建SQL Server。
|
访问关系中被引用的表没有主键或唯一索引。
|
访问接受其中所引用的表没有主键或唯一索引的表之间的关系。但是,这不受SQL Server。
在转换访问数据库对象时,输出窗口将列出任何关系,但不具有主键或唯一索引的表。您可以更改要添加主键或唯一索引,然后删除并重新添加 Access 数据库的表。或者,可以将数据迁移尽管表之间的关系将被破坏。
|
访问表具有超链接列。
|
SQL Server 不支持超链接列。相反,列一样访问 memo 列。 默认情况下,这些列将转换为nvarchar (max) 中的列SQL Server。可以自定义映射。有关详细信息,请参阅映射源和目标数据类型。
|
默认值或验证规则表达式包含无法转换为访问函数SQL Server或 SQL Azure。
|
访问默认表达式或验证规则可能包括访问系统函数或用户定义的函数,不会映射到SQL Server或 SQL Azure。使用不会映射到的函数SQL Server或 SQL Azure 将阻止您加载默认表达式或到的验证规则SQL Server或 SQL Azure。
|