同步DataDictionary时会出现此错误。
SQL错误说明:[Microsoft] [SQL Server Native Client 11.0] [SQL Server]数据库中已存在名为“I_100013RECID”的对象。
SQL语句:ALTER TABLE“DBO”.ACOCOSTCENTERATTRIBUTEVALUE_BR ADD CONSTRAINT I_100013RECID PRIMARY KEY NONCLUSTERED(RECID)
我复制了整个业务和代码数据库并创建了新的AX Env。我不确定源Env上是否存在此错误,但我想在新的环境中解决此问题。
我已经尝试过了:
DROP INDEX I_100013RECID ON [ACOCOSTCENTERATTRIBUTEVALUE_BR]
但是得到这个错误:无法删除索引'ACOCOSTCENTERATTRIBUTEVALUE_BR.I_100013RECID',因为它不存在或您没有权限。
但是在查询索引时,它显示了正确的表:
select object_name(object_id) from sys.indexes WHERE name = 'I_100013RECID'
输出:
dbo.ACOCOSTCENTERATTRIBUTEVALUE_BR
当我从SSMS删除表时,为什么2个索引没有被删除?为什么只有1被删除?同步后检查下面的3个索引。如何摆脱这些? SSMS不会让我删除它,告诉'目录无法修改'。我可以尝试通过更改主数据的设置来删除它吗?我不确定目录中是否填充了与此表相关的所有表。
表ACOCostCenterAttributeValue_BR
是否在您的环境中使用?我不认为,除非你和巴西公司合作。
我建议你
ConfigurationKey
从LedgerBasic更改为SysDeletedObjects63。ACOCostCenterAttributeValue_BR
表。它将使用ConfigurationKey
= LedgerBasic恢复表的SYS图层版本。约束名称在数据库中必须是唯一的:Can there be constraints with the same name in a DB?
Unique Constraint自动创建索引:qazxsw poi
这些问题向您展示了获得所有约束的不同方法:https://www.mssqltips.com/sqlservertip/4270/difference-between-sql-server-unique-indexes-and-unique-constraints/
最后我得到了解决方案:
问题是有2个表
[DBO]。[ACOCOSTCENTERATTRIBUTEVALUE_BR]
[DBO]。[dbo.ACOCOSTCENTERATTRIBUTEVALUE_BR]
我从ssms中删除了[dbo]。[ACOCOSTCENTERATTRIBUTEVALUE_BR]和从AOT同步,因此错误仍然存在。
我放弃了另一个表[dbo]。[dbo.ACOCOSTCENTERATTRIBUTEVALUE_BR](我甚至不知道它存在,因为表格是按字母顺序排列的,我只是在第一张表中查看)来自ssms,然后再次同步,它是成功的。
第二个表的前缀为“dbo”。在它的名字。我绝对不知道它是如何悄悄进入的,因为我甚至没有触及过此表。