2015-11-12 157 views
0

我需要將我的列數據類型從nText null更改爲nvarchar(1026) null。 我已經使用了下面的查詢(Sql服務器)。將列nText轉換爲nvarchar(1026)

ALTER TABLE [Tablename] ALTER COLUMN [Columnname] nvarchar(1026) null 

在執行查詢時,我得到了以下問題:

無法更改類型NTEXT或IMAGE列[列名= COLUMNNAME]

任何幫助,將不勝感激!感謝提前:)

+1

https://social.msdn.microsoft.com/forums/sqlserver/en-US/0e1dc68a-cb6d-44be-af9c-30095a760b79/ can not-alter-column-of-type-ntext-or-image – MusicLovingIndianGirl

+0

上面的評論要求你下載一個工具 - 實際上並不需要。鏈接[鏈接](http://stackoverflow.com/questions/487324/sql-server-converting-ntext-to-nvarcharmax)告訴你如何做到這一點,甚至勸你該怎麼辦呢,如果你不能安排停機時間。 – Seany

+0

選擇MAX(LEN(轉換(爲nvarchar(最大),列名)))從表名告訴我,這個查詢 –

回答

3

你的SQL語句在SQL Server 2014

工作正常,我相信你必須執行幾個步驟。

  1. 在你的表使用UPDATECONVERT創建一個新列

    ALTER TABLE [Tablename] ADD [NewCol] nvarchar(1026) null 
    
  2. 複製原始列的內容到新列

    UPDATE [Tablename] SET NewCol=CONVERT(nvarchar(1026), Columnname) 
    
  3. 刪除原始列

    ALTER TABLE [Tablename] drop column [Columnname] 
    
  4. 重命名新列回原來的名字

    Exec sp_rename 'Tablename.NewCol', 'Columnname', 'Column' 
    
+0

還需要檢查在舊ntext列數據的最大尺寸應該小於1026 –