Way*_*yne 19 azure-sql-database
我将更改SQL Azure上的主键.但是,当使用Microsoft SQL Server Management Studio生成脚本时,它会引发错误.因为SQL Azure上的每个表都必须包含主键.在创建之前我不能放弃它.如果我必须改变它,我该怎么办?
脚本生成
IF EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[mytable]') AND name = N'PK_mytable')
ALTER TABLE [dbo].[mytable] DROP CONSTRAINT [PK_mytable]
GO
ALTER TABLE [dbo].[mytable] ADD CONSTRAINT [PK_mytable] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF)
GO
Run Code Online (Sandbox Code Playgroud)
错误信息
Msg 40054, Level 16, State 2, Line 3
Tables without a clustered index are not supported in this version of SQL Server. Please create a clustered index and try again.
Msg 3727, Level 16, State 0, Line 3
Could not drop constraint. See previous errors.
The statement has been terminated.
Msg 1779, Level 16, State 0, Line 3
Table 't_event_admin' already has a primary key defined on it.
Msg 1750, Level 16, State 0, Line 3
Could not create constraint. See previous errors.
Run Code Online (Sandbox Code Playgroud)
Vyr*_*tek 22
我遇到了这个问题并在论坛上联系了Azure团队.基本上是不可能的.您需要创建一个新表并将数据传输给它.
我所做的是创建一个事务,并在其中执行以下操作:
将旧表重命名为OLD_MyTable.
使用正确的主键创建新表并将其命名为MyTable.
从OLD_MyTable到MyTable中选择内容.
删除OLD_MyTable.
您可能还需要在任何约束上调用sp_rename,以便它们不会发生冲突.
另见:http://social.msdn.microsoft.com/Forums/en/ssdsgetstarted/thread/5cc4b302-fa42-4c62-956a-bbf79dbbd040
它支持升级SQL V12和堆.因此,您可以删除主键并重新创建它.
| 归档时间: |
|
| 查看次数: |
10227 次 |
| 最近记录: |