更改完成
什麼SSMS會做幕後是
- 創建一個新表您的列的新數據類型
- 將原始表中的所有數據複製到新表
- 重命名新與舊名稱
- 降舊錶
- 表重新創建新表的所有索引
當然這需要一定的時間來複制你的所有「600多萬條記錄」。 此外,整個表將鎖定數據加載時間with (holdlock, tablockx)
更改它使用ALTER列,但隨後的數據庫不 的是,也許是因爲我們經過努力幾個指標
這是不正確的。
如果涉及到任何索引,並且只有具有該字段廣告的索引included
專用於其數據類型nvarchar(max)
,則服務器會給您一個錯誤,並且在您刪除該索引之前不會執行任何操作。如果沒有索引受到影響,它就不能「在那之後不起作用,也許是因爲我們有幾個索引」。
請再想一想您想要實現更改該列的類型。如果你認爲你會獲得一些空間,那麼這是錯誤的。
從nvarchar(max)
傳遞給nchar(max)
(從可變長度類型爲固定長度類型)你的數據會佔用更多的空間比現在因爲你要存儲固定數目字節,即使該列null
或1-2-3之後字符。
如果你只是想改變max
到水木清華一樣,例如8000
,你一無所獲,因爲這不是真正的數據大小,但只有最大尺寸的數據可以有。如果你的字符串大小是足夠小,你nvarchar(max)
已經存儲爲in-row data
,而不是LOB data
,因爲它是與ntext
'但隨後的數據庫無法正常工作後that'請詳細總是和張貼任何錯誤,文字 – TheGameiswar
你想傳遞給固定長度的列NCHAR(m),或者你想要的只是將最大可能大小更改爲固定值,但將列的長度保留爲可變長度(我的意思是,從nvarchar(max)傳遞給nvarchar (M))? – sepupic