将文件流添加到现有表列

时间:2016-03-23 16:58:36

标签: sql-server tsql sql-server-2014

我有以下表格列:

[Content] [varbinary](max) NULL

我想把它变成一个文件流列,所以我尝试了:

alter table dbo.Files
  alter column Content add filestream

但我收到错误:

Incorrect syntax near 'filestream'.  

我也试过

alter table dbo.Files
  alter column Content varbinary(max) filestream not null

但是我得到了错误:

Cannot alter column 'Content' in table 'Files' to add or remove the FILESTREAM column attribute.

如何将文件流添加到现有列?

1 个答案:

答案 0 :(得分:3)

您需要执行以下操作(来自here):

/* rename the varbinary(max) column
eg. FileData to xxFileData */
sp_RENAME '<TableName>.<ColumnName>', 'xx<ColumnName>' , 'COLUMN'
GO

/* create a new varbinary(max) FILESTREAM column */
ALTER TABLE <TableName>
ADD <ColumnName> varbinary(max) FILESTREAM NULL
GO

/* move the contents of varbinary(max) column to varbinary(max) FILESTREAM column */
UPDATE <TableName>
SET <ColumnName> = xx<ColumnName>
GO

/* drop the xx<ColumnName> column */
ALTER TABLE <TableName>
DROP COLUMN xx<ColumnName>
GO