1

ファイルストリームファイルテーブルに問題があります.insertステートメントを実行するとファイルは保存されますが、file_type列はnullです(計算列であるため、手動で更新することはできません)

DECLARE @counter INT, @maxPolicySectionId INT
DECLARE @name NVARCHAR(128)
DECLARE @file_stream VARBINARY(MAX)
DECLARE @path NVARCHAR(256)
DECLARE @command NVARCHAR(MAX)

DECLARE @fileTable TABLE(
name NVARCHAR(50),
filePath NVARCHAR(128),
polSecId INT
);

--...Populate @fileTable from database table...--

SELECT @counter = MIN(policySectionId), @maxPolicySectionId = MAX(policySectionId) FROM tblPolicySection

SET @name = (SELECT name FROM @fileTable WHERE polSecId = @counter)

SET @path = (SELECT filePath FROM @fileTable WHERE polSecId = @counter)
SET @path = REPLACE(@path, '192.168.0.6', 'meta-filesrv') 

--SET @file_type in Filetable somehow.. unable to perform UPDATE because it's a computed column

SET @command = N'SELECT @file_stream1 = CAST(bulkcolumn AS varbinary(MAX))
            from OPENROWSET(BULK ''' + @path + ''',
            SINGLE_BLOB) AS x'  

EXEC sp_executesql @command, N'@file_stream1 VARBINARY(MAX) OUTPUT',@file_stream1 = @file_stream OUTPUT

IF @path IS NOT NULL AND @name IS NOT NULL
BEGIN
    INSERT INTO BlobDocStore(
            name,
            file_stream
        )
        SELECT
            @name,
            @file_stream
 END

 SET @counter = @counter + 1

ご覧のとおり、ストリームを挿入ステートメントに渡しています。これは、私の理解の範囲内で機能するはずです。誰かが過去にこれについて何らかの経験をしたことを願っています。ありがとう。

4

1 に答える 1

2

file_type は、指定されたファイル名から派生します。file_type 列が の場合、@ NULLname 値にファイル拡張子がないことを示しています。

于 2016-12-20T11:51:46.777 に答える