Pra*_*een 3 sql t-sql sql-server alter-table sql-server-2014
我有一张像这样的桌子:
create table tbl (
id int,
data image
)
Run Code Online (Sandbox Code Playgroud)
发现该列的data
尺寸很小,可以存储在varbinary(200)
因此,新表将是
create table tbl (
id int,
data varbinary(200)
)
Run Code Online (Sandbox Code Playgroud)
如何在不丢失表中数据的情况下将该表迁移到新设计。
您可以使用此 ALTER 语句将现有列转换IMAGE
为VARBINARY(MAX)
. 参考这里
ALTER Table tbl ALTER COLUMN DATA VARBINARY(MAX)
Run Code Online (Sandbox Code Playgroud)
完成此转换后,您肯定可以恢复数据。
注意:- 不要忘记在执行前进行备份。
IMAGE 数据类型在未来版本的 SQL SERVER 中已被弃用,并且需要尽可能转换为 VARBINARY(MAX)。
只需执行两个单独的ALTER TABLE
s,因为您只能将转换image
为varbinary(max)
,但是之后可以更改其长度:
create table tbl (
id int,
data image
)
go
insert into tbl(id,data) values
(1,0x0101010101),
(2,0x0204081632)
go
alter table tbl alter column data varbinary(max)
go
alter table tbl alter column data varbinary(200)
go
select * from tbl
Run Code Online (Sandbox Code Playgroud)
结果:
id data
----------- ---------------
1 0x0101010101
2 0x0204081632
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
14717 次 |
最近记录: |