如何在Access应用中查找允许重复的索引?
索引筛选与SQL Server迁移问题解决
一、自动筛选允许重复的索引
可以直接修改现有代码,添加判断条件来自动筛选出非主键且允许重复的索引(也就是既不是主键,也不是唯一约束的普通索引),不用手动排查。修改后的代码如下:
Const adSchemaIndexes As Long = 12 Dim cn As Object ' ADODB.Connection Dim rs As Object ' ADODB.Recordset Dim i As Long Set cn = CurrentProject.Connection Set rs = cn.OpenSchema(adSchemaIndexes) With rs ' 如需查看所有字段名,取消下面三行注释 ' For i = 0 To (.Fields.Count - 1) ' Debug.Print .Fields(i).Name ' Next i Do While Not .EOF ' 筛选条件:非主键 且 非唯一索引(允许重复) If !PRIMARY_KEY = False And !UNIQUE = False Then Debug.Print !TABLE_NAME, !INDEX_NAME, "允许重复" End If .MoveNext Loop .Close End With Set rs = Nothing Set cn = Nothing
判断逻辑说明:
PRIMARY_KEY = False:排除主键索引(主键默认强制不允许重复)UNIQUE = False:排除唯一索引(唯一索引也不允许重复值)
两者同时满足的就是你要找的“允许重复”的普通索引。
二、SQL Server迁移仅生成空表的排查方向
针对迁移后只生成空表的问题,你可以从这几个方向排查:
- 确认迁移工具是否勾选了迁移数据的选项,不少工具默认只迁移表结构
- 检查源Access表本身是否有数据,避免是空表迁移
- 验证迁移账号的权限:是否有权限读取Access源表,以及向SQL Server目标库写入数据
- 查看迁移过程的日志,是否存在数据类型不兼容、约束冲突等报错导致数据未写入
- 若用自定义脚本迁移,检查脚本是否遗漏了数据插入的逻辑
内容的提问来源于stack exchange,提问作者srdjan sai
相关产品推荐
相关产品推荐

