是否可以將SQL Server 2008數據庫中的列類型從varchar(255)
更改爲varchar(MAX)
而不必刪除表並重新創建?Varchar(255)到Varchar(MAX)
SQL Server Management Studio每次嘗試使用它時都會引發錯誤 - 但爲了節省自己的頭痛,我很高興知道是否可以在不需要DROP和CREATE的情況下更改此類型。
感謝
是否可以將SQL Server 2008數據庫中的列類型從varchar(255)
更改爲varchar(MAX)
而不必刪除表並重新創建?Varchar(255)到Varchar(MAX)
SQL Server Management Studio每次嘗試使用它時都會引發錯誤 - 但爲了節省自己的頭痛,我很高興知道是否可以在不需要DROP和CREATE的情況下更改此類型。
感謝
您應該可以使用T-SQL來做到這一點。
喜歡的東西
ALTER TABLE [table] ALTER COLUMN [column] VARCHAR(MAX)
這工作。感謝 – Darbio 2010-04-23 03:55:42
對我來說也幫了我...謝謝 – 2015-07-03 11:38:07
「保存更改是不允許的。您所做的更改要求 需要刪除以下表格, 重新創建。您已對 重新創建或啓用選項012xx的表進行了 更改。防止保存需要重新創建 表的更改。選項 「防止保存更改」未啓用 ..
這是在SQL Server Management Studio 2008中的默認情況下是開啓一個新的「功能」。每當你做出更大的改變時,SSMS只能通過創建一個新表來重新創建表,然後移動舊錶中的數據 - 所有這些都在後臺(這些更改包括重新排列列以及其他內容)。
這個選項默認是關閉的,因爲如果你的表有FK約束和東西,這種重做表的方式可能會失敗。但是你絕對可以開啓這個功能!
alt text http://i42.tinypic.com/19pegj.png
這是Tools > Options
下,一旦取消選中該選項,您可以再次做這幾樣在表設計更改表結構。
謝謝marc_s。我已經取消了這個選項,但仍然阻止我進行更改。當我自己寫他們的時候,上面的旁觀者的alter語句就起作用了。謝謝:) – Darbio 2010-04-23 06:54:13
@JD:嗯......奇怪......通常這是問題 - 很高興你已經有了解決方案,不過! – 2010-04-23 11:56:40
注意
喜歡的東西
ALTER TABLE [table] ALTER COLUMN [column] VARCHAR(MAX)
https://dba.stackexchange.com/questions/15007/change-length-of-varchar-on-live-prod-table
馬丁·史密斯的answare:
如果你正在增加它varchar(100 - 8000)
(即比varchar(max))
其他任何東西,你這樣做通過TSQL而不是SSMS GUI
ALTER TABLE YourTable ALTER COLUMN YourCol varchar(200) [NOT] NULL而不是將列的可空性從
NULL
到
NOT NULL
(在某些情況下,這將鎖定表,同時對所有行進行驗證,並可能將其寫入或從
NOT NULL
更改爲
NULL
,然後這是一個快速元數據更改。它可能需要等待表上的
SCH-M
鎖,但一旦獲得該更改將非常即時。 需要注意的一點是,在等待
SCH-M
鎖定期間,其他查詢將被阻止,而不是先跳過隊列,因此您可能首先考慮添加
SET LOCK_TIMEOUT
。 還要確保在
ALTER TABLE
語句中明確指定
NOT NULL
如果這是原始列狀態,否則該列將更改爲允許
NULL
。
奇怪,在SQL Server 2005中試用過,對我來說工作正常。 – anonymous 2010-04-23 03:22:10
順便說一句,錯誤是什麼引發的? – anonymous 2010-04-23 03:29:20
'不允許保存更改。您所做的更改需要刪除並重新創建以下表格。您要麼對無法重新創建的表格進行更改,要麼已啓用「禁止保存需要重新創建表格的更改」選項。 選項'禁止保存更改'未啓用... – Darbio 2010-04-23 03:34:24