无法在SQL Azure中删除/更改列

时间:2015-02-23 06:50:19

标签: sql azure-sql-database

正如标题所说,我无法删除或更改SQL Azure中的列。我想将其数据类型从int更改为tinyint。我确实指定了tinyint,但似乎Azure覆盖了那个。 我通过管理控制台和SSMS尝试过。 我发现了以下SO问题,但重要的是,我的列不是主键/外键,甚至没有在索引中使用。 SQL Azure - Could not able to alter column type

在Aure Management Console中,我收到以下错误

<?xml version="1.0" encoding="utf-8"?><m:error xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"><m:code>InternalError:7752a6bb-a244-f1a0-221b-b9c482ae6680</m:code><m:message xml:lang="en-US">An error was encountered while applying the changes.&#xD;
An exception occurred while executing the Transact-SQL statement: ALTER TABLE [dbo].[xxxxx] DROP COLUMN [EmailFrequency2].&#xD;
The object 'ColumnDefault_b0898c7d-0fb6-4466-8894-1325eb8c4efd' is dependent on column 'EmailFrequency2'.&#xD;
ALTER TABLE DROP COLUMN EmailFrequency2 failed because one or more objects access this column.</m:message></m:error>

我确实尝试过谷歌搜索&#34;内部错误:7752a6bb-a244-f1a0-221b-b9c482ae6680&#34;但得到了零点击。

我在尝试更改表时尝试禁用约束(将数据类型从int更改为tinyint):

ALTER TABLE [dbo].[xxxxx] NOCHECK CONSTRAINT ALL
ALTER TABLE [dbo].[xxxxx] ALTER COLUMN [EmailFrequency] TINYINT NULL
ALTER TABLE [dbo].[xxxxx] NOCHECK CONSTRAINT ALL

但我得到了基本相同的错误:

Msg 5074, Level 16, State 1, Line 2
The object 'ColumnDefault_871cbb52-f294-4a57-9c51-b8fd435d0d59' is dependent on column 'EmailFrequency'.
Msg 4922, Level 16, State 9, Line 2
ALTER TABLE ALTER COLUMN EmailFrequency failed because one or more objects access this column.

我无法在任何地方找到对ColumnDefault_xxxx-GUID-xxx对象的任何引用

有谁能建议我如何解决这个限制?我能够重命名表,但不能删除它或更改数据类型。

2 个答案:

答案 0 :(得分:3)

默认值是您拥有的约束,您必须先删除它:

ALTER TABLE xxxxx DROP CONSTRAINT <name of your default here>

答案 1 :(得分:0)

我使用代码优先迁移,就我而言,我试图通过使用属性上方的[Required]注释使类的属性不为空。当我尝试到达端点时,这一直向我提供JSON响应“发生了错误”。

一段时间后,我意识到我在那个特定的表中有记录,该记录对于我要使其不为null的属性没有值,因此是错误的。愚蠢的错误。我希望我可以从一个小时的搜查中拯救一个人。哈哈。