2016-12-16 5 views
1

filestreamファイルテーブルに問題があります。ファイルを保存する際にinsert文を実行しても、file_type列がnullです(手動では更新できませんFilestream Filetableでの問題挿入時のfile_type列の計算

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 

ご覧のとおり、わかりやすく理解できるように挿入文にストリームを渡しています。私は誰かがこれまでにいくつかの経験を持っていたことを願っています。ありがとう。

+0

'@ fileTable'テーブルに' file_type'カラムはありません。 – Magnus

+0

これは、ファイルテーブルの固定スキーマを持つBlobDocStoreに挿入する前に、自分のデータを配置するための一時テーブルに過ぎません。私が間違っていない限り、データを挿入する唯一の2つの必須フィールドはnameとfile_streamです。ファイルタイプはこれらに基づいて生成する必要がありますか? – bjjrolls

答えて

2

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

+0

これは、ありがとうDanだった。 – bjjrolls