无法在Azure Sql中更改复合主键
表定义: 在上表中,我使用Id1和Id2组合组合了主键。 现在,我想在复合主键中包含Id3,为此,我将执行以下操作:无法在Azure Sql中更改复合主键,sql,sql-server,azure,azure-sql-database,composite-key,Sql,Sql Server,Azure,Azure Sql Database,Composite Key,表定义: 在上表中,我使用Id1和Id2组合组合了主键。 现在,我想在复合主键中包含Id3,为此,我将执行以下操作: ALTER TABLE tbl DROP CONSTRAINT PK_tbl ALTER TABLE [dbo].[tbl] ADD CONSTRAINT [PK_tbl] PRIMARY KEY CLUSTERED ( [Id1] ASC, [Id2] ASC, [Id3] ASC )WITH (PAD_INDEX = OFF, STATISTI
ALTER TABLE tbl
DROP CONSTRAINT PK_tbl
ALTER TABLE [dbo].[tbl] ADD CONSTRAINT [PK_tbl] PRIMARY KEY CLUSTERED
(
[Id1] ASC,
[Id2] ASC,
[Id3] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
GO
上面的查询在我的本地sql server db上运行得非常好,但在Azure db上运行时出现错误:
此版本的不支持没有聚集索引的表
SQL Server。请创建聚集索引并重试
我应该如何修改azure sql上的复合主键?问题是,删除PK约束也会删除基础聚集索引,azure中不允许使用堆
您最好创建一个具有所需结构的新表,复制数据,删除旧表,重命名新表并重新创建FKs(如果有)。Azure SQL数据库的最新更新V12允许您拥有无聚集索引的表,即作为堆。如果将服务器升级到最新版本,则可以运行查询以成功修改PK V12启用的其他功能:
如何升级:旧版和V12版SQL数据库服务器支持您正在执行的操作。只有在非V12服务器上进行插入时才需要使用聚集索引。您可以在非V12数据库中创建堆,也可以删除并重新创建聚集索引/约束。所以你不应该得到这个错误。你是如何运行这些语句的?您使用什么工具来运行这些语句
ALTER TABLE tbl
DROP CONSTRAINT PK_tbl
ALTER TABLE [dbo].[tbl] ADD CONSTRAINT [PK_tbl] PRIMARY KEY CLUSTERED
(
[Id1] ASC,
[Id2] ASC,
[Id3] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
GO