合并复制 sql 服务器孤立约束
merge replication sql server orphan constraints
我们最近迁移到了一台新服务器,首先恢复了数据库,然后设置了复制。相同的合并代理适用于现有服务器但不适用于新的 one.Below 是当合并代理为 运行:
时弹出的错误
The schema script 'Subscribed_Userdb99ffc3_18.sch' could not be
propagated to the subscriber. (Source: MSSQL_REPL, Error number:
MSSQL_REPL-2147201001) Get help: http://help/MSSQL_REPL-2147201001
Could not drop object 'dbo.Subscribed_Users_Temp_Storage' because it
is referenced by a FOREIGN KEY constraint. (Source: MSSQLServer, Error
number: 3726) Get help: http://help/3726
当我尝试删除 table 时,它显示 table 被外键引用 key.When 我试图禁用它显示的外键
Msg 3733, Level 16, State 2, Line 1 Constraint
'FK_Subscribed_User_Paypal_Details_Subscribed_Users_Temp_Storage' does
not belong to table 'subscribed_users_temp_storage'. Msg 3727, Level
16, State 0, Line 1
当我检查 table 的架构时,它显示外键在那里。
这是否意味着外键是孤立的,如果是,那么可能的解决方案是什么。
无法删除约束。查看以前的错误。
查看您问题中的 drop FK 错误消息,我认为您正试图将其放在错误的地方 table。请注意,最初复制代理试图删除 dbo.Subscribed_Users_Temp_Storage
table,但报告有一个外键,引用它。
您找到了提到的 FK_Subscribed_User_Paypal_Details_Subscribed_Users_Temp_Storage
外键,但它不在 dbo.Subscribed_Users_Temp_Storage
中,而是根据它的名称我认为它在 Subscribed_User_Paypal_Details
table,而您正试图将其放入 dbo.Subscribed_Users_Temp_Storage
.
我认为正确的 DROP
FK 语句应该是这样的:
ALTER TABLE [dbo].[Subscribed_User_Paypal_Details]
DROP CONSTRAINT [FK_Subscribed_User_Paypal_Details_Subscribed_Users_Temp_Storage]
注意,我假设 Subscribed_User_Paypal_Details
table 也驻留在 [dbo]
架构中。如果它驻留在不同的架构中,请相应地更改语句。
注意,可能有其他外键引用 dbo.Subscribed_Users_Temp_Storage
table。在复制代理重新创建 dbo.Subscribed_Users_Temp_Storage
table.
之后,您将需要 drop/disable 然后 recreate/enable 它们
要找出所有引用 dbo.Subscribed_Users_Temp_Storage
的外键,请执行以下命令:
exec sp_help 'dbo.Subscribed_Users_Temp_Storage'
并向下滚动到名为 Table is referenced by foreign key
的 SELECT
结果。
HTH
我们最近迁移到了一台新服务器,首先恢复了数据库,然后设置了复制。相同的合并代理适用于现有服务器但不适用于新的 one.Below 是当合并代理为 运行:
时弹出的错误The schema script 'Subscribed_Userdb99ffc3_18.sch' could not be propagated to the subscriber. (Source: MSSQL_REPL, Error number: MSSQL_REPL-2147201001) Get help: http://help/MSSQL_REPL-2147201001 Could not drop object 'dbo.Subscribed_Users_Temp_Storage' because it is referenced by a FOREIGN KEY constraint. (Source: MSSQLServer, Error number: 3726) Get help: http://help/3726
当我尝试删除 table 时,它显示 table 被外键引用 key.When 我试图禁用它显示的外键
Msg 3733, Level 16, State 2, Line 1 Constraint 'FK_Subscribed_User_Paypal_Details_Subscribed_Users_Temp_Storage' does not belong to table 'subscribed_users_temp_storage'. Msg 3727, Level 16, State 0, Line 1
当我检查 table 的架构时,它显示外键在那里。
这是否意味着外键是孤立的,如果是,那么可能的解决方案是什么。 无法删除约束。查看以前的错误。
查看您问题中的 drop FK 错误消息,我认为您正试图将其放在错误的地方 table。请注意,最初复制代理试图删除 dbo.Subscribed_Users_Temp_Storage
table,但报告有一个外键,引用它。
您找到了提到的 FK_Subscribed_User_Paypal_Details_Subscribed_Users_Temp_Storage
外键,但它不在 dbo.Subscribed_Users_Temp_Storage
中,而是根据它的名称我认为它在 Subscribed_User_Paypal_Details
table,而您正试图将其放入 dbo.Subscribed_Users_Temp_Storage
.
我认为正确的 DROP
FK 语句应该是这样的:
ALTER TABLE [dbo].[Subscribed_User_Paypal_Details]
DROP CONSTRAINT [FK_Subscribed_User_Paypal_Details_Subscribed_Users_Temp_Storage]
注意,我假设 Subscribed_User_Paypal_Details
table 也驻留在 [dbo]
架构中。如果它驻留在不同的架构中,请相应地更改语句。
注意,可能有其他外键引用 dbo.Subscribed_Users_Temp_Storage
table。在复制代理重新创建 dbo.Subscribed_Users_Temp_Storage
table.
要找出所有引用 dbo.Subscribed_Users_Temp_Storage
的外键,请执行以下命令:
exec sp_help 'dbo.Subscribed_Users_Temp_Storage'
并向下滚动到名为 Table is referenced by foreign key
的 SELECT
结果。
HTH