2014-01-10 225 views
2

我有一個表dbo.ExceptionMessage,現在我想將列數據類型nvarchar(100)更改爲nvarchar(MAX)。我用改變查詢更改列數據類型

ALTER TABLE dbo.ExceptionMessage ALTER COLUMN Address nvarchar(MAX) 

雖然執行此查詢它顯示一些錯誤,如。

對象'DF_ExceptionMessage_Address'依賴於'Address'列。

ALTER TABLE ALTER COLUMN地址失敗,因爲一個或多個對象訪問此列。

我們怎樣才能解決這個...

+0

可能重複[如何更改SQL Server數據庫列數據類型而不會丟失數據(HTTP:/ /stackoverflow.com/questions/5136013/how-to-change-column-datatype-in​​-sql-server-database-without-losing-data) – RAS

+0

那個笨蛋在這裏似乎沒有幫助。 OP已經在該問題的答案中使用了sql,關鍵是他需要放棄相關約束。 – OGHaza

回答

4

先刪除所有約束喜歡這個

ALTER TABLE TableName DROP CONSTRAINT [DF__TableName__ColumnName__FieldName] 

,然後執行變更

ALTER TABLE dbo.ExceptionMessage ALTER COLUMN Address nvarchar(MAX) 

然後重新進入限制

+0

我不明白@marc_s –

+0

如果你** DROP **約束 - 你也應該在你完成後重新應用**。 –

1

你必須找出哪些類型的約束DF_ExceptionMessage_Address的是,放棄它,改變列的類型,然後如果你需要重新創建約束。

0

你先試:

ALTER TABLE <tablename> DROP CONSTRAINT <Con_Name>; 

和ñ做你的阿爾特

ALTER TABLE dbo.ExceptionMessage ALTER COLUMN Address nvarchar(MAX) 

再添加約束

0

THIZ幫助你改變的

alter table TableName 

    alter column ColumnName nvarchar(200);