同步DataDictionary时会出现此错误。
SQL错误描述:[Microsoft] [SQL Server本机客户端11.0] [SQL 服务器]中已经有一个名为“ I_100013RECID”的对象 数据库。
SQL语句:ALTER TABLE“ DBO” .ACOCOSTCENTERATTRIBUTEVALUE_BR添加 CONSTRAINT I_100013RECID主密钥已删除(RECID)
我复制了整个业务和代码数据库,并创建了新的AX Env。我不确定源环境中是否也存在此错误,但是我想在新环境中解决此问题。
我已经尝试过的东西:
从SQL Server Management Studio中删除表,然后 从AOT同步,但错误仍然存在。
试图从SSMS中删除索引名称:
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
在3个索引中,为什么从SSMS删除表时2个索引没有被删除?为什么只有1个被删除?同步后检查以下3个索引。如何摆脱这些? SSMS不允许我删除它,告诉它“无法修改目录”。我可以尝试通过更改主数据上的设置将其删除吗?我不确定目录中是否填充了与此表相关的所有表。
答案 0 :(得分:2)
您的环境中是否完全使用了表ACOCostCenterAttributeValue_BR
?我认为不会,除非您与巴西公司合作。
我建议您
ConfigurationKey
从LedgerBasic更改为SysDeletedObjects63。ACOCostCenterAttributeValue_BR
表。它将使用ConfigurationKey
= LedgerBasic恢复该表的SYS层版本。答案 1 :(得分:1)
约束名称在数据库中必须是唯一的: Can there be constraints with the same name in a DB?
此问题向您展示了获取所有约束的不同方法: SQL Server 2008- Get table constraints
答案 2 :(得分:1)
最后我得到了解决方案:
问题在于有2张桌子
[dbo]。[ACOCOSTCENTERATTRIBUTEVALUE_BR]
[dbo]。[dbo.ACOCOSTCENTERATTRIBUTEVALUE_BR]
我从ssms中删除了表[dbo]。[ACOCOSTCENTERATTRIBUTEVALUE_BR],从AOT中进行了同步,因此错误仍然存在。
我从ssms中删除了另一个表[dbo]。[dbo.ACOCOSTCENTERATTRIBUTEVALUE_BR](我什至不知道它的存在,因为表是按字母顺序排列的,而我只看第一个表),然后再次进行同步成功了。
第二个表的前缀为“ dbo”。以它的名字。我绝对不知道它是如何爬行的,因为我以前从未接触过这张桌子。