我必须将SQL Server 2008表中的数据类型从varchar(max)更改为nvarchar(max)。这个表格里面有数据。有没有办法在不丢失数据的情况下更改数据类型?在SQL Server 2008中将数据列从varchar(max)更改为nvarchar(max)
13
A
回答
17
您可以用标准的语法修改表:
ALTER TABLE some_table ALTER COLUMN some_column nvarchar(max)
你可能会想然而,重建任何索引,以确保它们正常工作。
2
总是做一个备份,所以无论发生什么事情,你都可以回到事情的方式。
这样说从varchar(max)
改为nvarchar(max)
不应该丢失数据。
旁注:你可能有顾虑,如果你是在另一个方向nvarchar(max)
更改为varchar(max)
的进程必须扩展字符,如果任何人出席转换。
7
另一种选择,以尽量减少破坏(因为我不相信ALTER COLUMN
将在网上进行),是:
ALTER TABLE dbo.table ADD new_column NVARCHAR(MAX); -- metadata operation
现在,您可以更新波/批次/交易数据,而不是应用的变化整个表在一次长交易中。如果您确信数据已被复制,您可以删除旧列,重命名新列,然后重新创建任何受影响的索引(您的MAX列不能位于任何索引的键中,但可能有无意中将其放入INCLUDE定义中 - 如果是这种情况,您应该反问)。
您仍然希望重建所有索引以回收现在未使用的空间(如果您使用企业版,您可以在线执行此操作)。
相关问题
- 1. SQL Server Nvarchar(max)
- 2. 将字段类型从nvarchar(255)更改为SQL Server 2005中的nvarchar(Max)
- 3. 将SQL Server数据库中的所有varchar列更改为nvarchar
- 4. 按SQL Server中的varbinary(MAX)或varchar(MAX)
- 5. SQL Server,将NTEXT转换为NVARCHAR(MAX)
- 6. 在SQL Server中更改列varchar(255)nvarchar
- 7. sql server 2005 - 导出nvarchar(max)数据
- 8. 为nvarchar(MAX)
- 9. SQL MAX()在VARCHAR
- 10. 如何在SQL Server 2008中将所有varchar数据类型列更改为Nvarchar数据类型列
- 11. SQL Server如何处理varchar列的MAX?
- 12. 将nvarchar(4000)转换为nvarchar(max)
- 13. 将varchar(max)转换为varbinary(max)
- 14. SQL Server如何将这些Unicode字符存储到VARCHAR(MAX)而不是NVARCHAR(MAX)的列中
- 15. 在sql server R2中将nvarchar(max)转换为布尔值
- 16. SQL Server的隐式转换为VARCHAR(MAX)
- 17. 可以使用srv_paramsetoutput()来设置nvarchar(max)或varchar(max)吗?
- 18. 字符串或二进制数据将被截断:NVARCHAR(MAX),SQL Server 2008
- 19. nvarchar(max)vs NText
- 20. SQL Server 2008 VarChar(Max)只返回8000个字符。为什么?
- 21. 使用VARCHAR(max),NVARCHAR(max)和VARBINARY(max)代替TEXT,NTEXT和IMAGE有什么好处?
- 22. 任何隐藏的陷阱将列从varchar(8000)更改为varchar(max)?
- 23. 更改NVARCHAR到VARCHAR列数据类型
- 24. Varchar(255)到Varchar(MAX)
- 25. sql server表中nvarchar(max)列的最大数目
- 26. 将SQL Server数据库迁移到HSQLDB替代varchar(max)
- 27. 将varchar更改为数据库中所有表列的nvarchar
- 28. Varchar(max)列不允许为SQL Server中的主键
- 29. 检索VARCHAR(MAX)
- 30. 将所有VARCHAR列更改为NVARCHAR
非常好的点+1 – RThomas