【问题标题】:Cannot drop the table <TableName> because it is being used for replication无法删除表 <TableName>,因为它正在用于复制
【发布时间】:2016-03-21 06:24:34
【问题描述】:

我无法修改数据库中表的结构。用于的数据库 复制。我收到此错误

【问题讨论】:

  • 就是这个意思,它正在被复制使用。您需要删除复制并删除表,然后再次安装 relcuation。
  • 在我的情况下这是不可能的,因为数据库从 30 多个客户端复制。
  • 那你为什么要扔桌子呢?你是DBA吗?你知道如何处理复制吗?
  • @FLICKER 我没有下垂只是修改表结构在表中添加一个新列
  • 所以答案是您需要删除复制更改您的架构,然后再次安装它。根据您的数据库、网络和环境,它可能会很复杂。您也可以在 DBA 网站上提问:dba.stackexchange.com

标签: sql-server database-replication


【解决方案1】:

正如错误所说,该表用于复制,这意味着它是复制发布者中的文章。为了能够修改表,您应该将其从复制中删除,然后更新模式,然后在复制中再次添加它。再次添加后,您必须重新初始化订阅以获取修改后的表模式。

【讨论】:

  • 我的数据库从 30 多个客户端复制,如果有任何其他选项我可以尝试?
【解决方案2】:

我在复制时遇到了这个错误

无法删除表“dbo.repl_application_camp_choice”,因为它是 用于复制。 (来源:MSSQLServer,错误号:3724)

我尝试的第一件事 - 错误 - 是手动删除订阅数据库中的表。

但同样的错误也出现了。

接下来我尝试的是:

USE [ORCASTG]
GO
EXEC sp_msunmarkreplinfo 'dbo.repl_application_camp_choice'

--Msg 3724, Level 16, State 3, Line 5
--Cannot drop the table 'dbo.repl_application_camp_choice' because it is being used for replication.

但是没有用

然后我尝试了这个:

USE [ORCASTG]
GO
DECLARE @subscriptionDB AS sysname  
SET @subscriptionDB = N'ORCASTG'  

USE master  
EXEC sp_removedbreplication @subscriptionDB  
GO  

USE [ORCASTG]
GO
DROP TABLE IF EXISTS [dbo].[repl_application_camp_choice]
GO

这成功了


我得到了herehere 的帮助

来自here 我听说了一些东西,但我没有尝试过。

  1. 设置离线(数据库),然后你应该可以删除它(表)。
  2. exec sp_removedbreplication ‘DB_NAME’

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-14
    • 2020-08-06
    • 2016-05-22
    • 1970-01-01
    • 1970-01-01
    • 2021-07-01
    • 2011-11-20
    相关资源
    最近更新 更多