将文件流添加到现有表列

Mig*_*ura 8 t-sql sql-server sql-server-2014

我有下表列:

[Content] [varbinary](max) NULL
Run Code Online (Sandbox Code Playgroud)

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

alter table dbo.Files
  alter column Content add filestream
Run Code Online (Sandbox Code Playgroud)

但我收到错误:

Incorrect syntax near 'filestream'.  
Run Code Online (Sandbox Code Playgroud)

我也试过

alter table dbo.Files
  alter column Content varbinary(max) filestream not null
Run Code Online (Sandbox Code Playgroud)

但我得到了错误:

Cannot alter column 'Content' in table 'Files' to add or remove the FILESTREAM column attribute.
Run Code Online (Sandbox Code Playgroud)

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

Kam*_*ami 10

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

/* 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
Run Code Online (Sandbox Code Playgroud)

  • 如果遇到错误消息“具有 FILESTREAM 列的表必须具有带有 ROWGUIDCOL 属性的非空唯一列。” 您可以使用以下 T-SQL 语句将此属性添加到列:“ALTER TABLE &lt;TableName&gt; ALTER COLUMN &lt;IdColumnName&gt; ADD ROWGUIDCOL”。请注意,列 &lt;IdColumnName&gt; 的类型必须是 uniqueidentifier。 (2认同)