【问题标题】:How to add a column to the primary key of a replicated table in SQL Server 2017如何在 SQL Server 2017 中向复制表的主键添加列
【发布时间】:2020-06-15 16:39:48
【问题描述】:

我需要将表中的现有列添加到表的 PK 中。该表已复制,因此我无法仅添加 SSMS。有没有办法做到这一点? PK 已经是 3 列的组合,现在我需要在定义中添加第 4 列。

【问题讨论】:

  • 我很确定,除了从复制中删除整个表,然后重新添加它之外,这是无法做到的。

标签: sql-server replication composite-primary-key


【解决方案1】:

我想通了,这是执行此操作的脚本:

USE <db name>
GO

exec sp_dropsubscription @publication = N'<publication>', @article = N'<article>', @subscriber = N'<subscriber>', @destination_db = N'<destination db>'
GO

exec sp_droparticle @publication = N'<publication>', @article = N'<article>'
GO

ALTER TABLE [dbo].[<table name>] DROP CONSTRAINT [<constraint name>] WITH ( ONLINE = OFF )
GO

/****** Object:  Index [<index name>]    Script Date: 6/19/2020 7:44:44 AM ******/
ALTER TABLE [dbo].[<table name>] ADD  CONSTRAINT [<constraint name>] PRIMARY KEY CLUSTERED 
(
    [COL1] ASC,
    [COL2] ASC,
    [COL3] ASC, 
    [COL4] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [MFDP00_MFDP00FG08]
GO

exec sp_addarticle @publication='<publication>', @article ='<article>', @source_object='<source object>', @schema_option=<schema option>
GO

exec sp_addsubscription @publication='<publication>', @article='<article>', @subscriber='<subscriber>', @destination_db='<destination db>'
GO

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-17
    • 2013-11-17
    • 1970-01-01
    • 1970-01-01
    • 2010-09-10
    相关资源
    最近更新 更多