ODBC连接SQL Server至Access 2016时含非英文字符行显示#DELETED求助
解决Access 2016链接SQL Server含非英文字符行显示#DELETED的问题
以下是针对该问题的具体排查和解决方向:
确认链接表的主键/唯一索引
Access链接SQL Server表时,必须依赖明确的主键或非空唯一索引来识别记录。即使导入表正常,缺少主键会导致Access无法正确同步记录,遇到字符编码差异时更易触发#DELETED。请确保SQL Server表已设置主键,且在Access链接向导中正确选中了该主键字段。调整ODBC连接的自定义参数
手动编辑ODBC连接字符串,添加以下参数尝试解决字符编码转换问题:- 加入
AutoTranslate=No:关闭ODBC驱动的自动字符集转换,避免Unicode字符在转换过程中损坏。 - 加入
DataTypeCompatibility=80:将驱动兼容性设置为SQL Server 2000模式,Access对该模式的Unicode字符处理更稳定。
操作方式:打开ODBC数据源管理器,找到对应SQL Server DSN,进入配置界面点击「高级」,在「附加连接参数」中输入上述参数(每行一个)。
- 加入
匹配系统区域设置与数据库编码
SQL Server的Latin1_General_CI_AS排序规则对应Windows-1252字符集,请确保Access所在系统的区域设置代码页与之匹配(如设置为英语(美国))。区域设置不匹配会导致字符转换时出现不可逆的编码错误,引发#DELETED。验证ODBC驱动与Access的位数一致性
Access 2016默认是32位版本,必须使用32位的ODBC 17/18驱动。若安装了64位驱动,会出现兼容性问题,包括字符处理异常。可通过「控制面板→ODBC数据源(32位)」来配置对应驱动。临时测试排序规则调整
创建一个测试表,将其排序规则改为SQL_Latin1_General_CP1_CI_AS(SQL Server兼容的Latin1排序),或对应非英文字符的区域排序规则(如中文用Chinese_PRC_CI_AS),再链接到Access验证是否恢复正常,以此排除排序规则的影响。
内容的提问来源于stack exchange,提问作者Alexis
相关产品推荐
相关产品推荐

