Vac*_*ano 5 replication foreign-key sql-server sql-server-2012
我一直在尝试让以前工作的复制开始工作。
我尝试了很多设置,但我似乎无法让它工作。
这是场景。我从目标数据库中删除了所有 FK 约束(称之为 DestDB)。
然后我重新初始化我的复制,当我运行时,我收到这个(去标识化)错误:
ALTER TABLE 语句与 FOREIGN KEY 约束“FK_TableOnlyInDestDB_MyReplicatedTable”冲突。冲突发生在数据库“DestDB”、表“SomeSchema.MyReplicatedTable”、“MyReplicatedTableId”列中。(来源:MSSQLServer,错误号:547)
它让我发疯,因为该数据库中不存在指示的 FK。
现在,我确实从另一个数据库复制了这个数据库(备份和恢复)。所以我唯一能想到的是它以某种方式穿越了溪流。
但这似乎不太可能。
任何想法都会很棒!
注意:这是我运行的查询,以确保我没有 FK(它没有返回任何行):
use DestDB
SELECT f.name AS ForeignKey,
OBJECT_NAME(f.parent_object_id) AS TableName,
COL_NAME(fc.parent_object_id, fc.parent_column_id) AS ColumnName,
OBJECT_NAME (f.referenced_object_id) AS ReferenceTableName,
COL_NAME(fc.referenced_object_id, fc.referenced_column_id) AS ReferenceColumnName
FROM sys.foreign_keys AS f
INNER JOIN sys.foreign_key_columns AS fc ON f.OBJECT_ID = fc.constraint_object_id
Run Code Online (Sandbox Code Playgroud)
我还检查以确保有问题的 FK 不在源表上(在我从中复制的数据库中)。
我也试过: EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all'
也试过 Dropping MyReplicatedTable。删除就好了,复制重新创建了它。(但仍然给了我错误。)
我尝试创建一个空数据库作为订阅者。效果很好,所以是 DestDB 中的某些东西导致了问题,但 ERROR 中的 FK 不存在。
小智 6
很抱歉唤醒这个死线程,但当问题仍然不确定时,我讨厌它。无论如何,我遇到了同样的问题。显然,SQL 服务器复制将外键保存在“dbo.MSsavedforeignkeys”中,这是我找到阻止程序 FK 的地方。一个快速delete dbo.MSsavedforeignkeys where constraint_name = N'FK_TableOnlyInDestDB_MyReplicatedTable'解决了我的问题。当然,在复制失败后可能有更多的“最佳实践”清理方法。
| 归档时间: |
|
| 查看次数: |
5241 次 |
| 最近记录: |