3

SQL Express データベースの空き容量がなくなったため、大量のデータを古い "image" BLOB 列から SQL Server 2008 の新しい (varbinary) "filestream" 列に移行しています。

それを行うためのアプリケーションを書こうとしていましたが、思いもよらなかった SQL でそれを行う賢い方法があるのではないかと思いました。

SQLで簡単な方法でこれを達成する方法を知っている人はいますか?

次のテーブルがあるとします。

TABLE: [Data]
COLUMN: ID INT
COLUMN: ImageFile IMAGE
COLUMN: FileStreamFile VARBINARY(MAX) FILESTREAM DEFAULT(0x)

明らかに、ImageFile が古い列であり、FileStreamFile に移行したい

4

2 に答える 2

2

アップデートでイメージを varbinary(max) にキャストしてみましたか?

UPDATE [Data]
SET    [FileStreamFile] = CAST([ImageFile] AS VARBINARY(MAX))

この MSDN ページに基づくと、うまくいくようです。

于 2009-06-11T17:04:25.757 に答える
0

FILESTREAM 機能を有効にしてください。

以下のコード ( MSDN から)に従って、ファイルストリームをサポートするテーブルを作成する必要があります。

CREATE TABLE Archive.dbo.Records
(
    [Id] [uniqueidentifier] ROWGUIDCOL NOT NULL UNIQUE, 
    [SerialNumber] INTEGER UNIQUE,
    [Chart] VARBINARY(MAX) FILESTREAM NULL
)
GO

その後、物事はかなり透過的であるように見えます。つまり、ファイルストリームの追加は、最小限の労力でSQL Serverによって処理されます。例:

INSERT INTO Archive.dbo.Records
    VALUES (newid (), 3, 
      CAST ('Seismic Data' as varbinary(max)));
GO
于 2009-06-11T17:07:53.923 に答える