2017-12-31 116 views
1

FILESTREAM列を読み書きするのにSystem.Data.SqlTypes.SqlFileStreamを使用しますか?例えばFILESTREAM - FILESTREAM列に大きなファイルを読み書きします

:私はここに示されているクエリを使用して直接FileDataにアクセスすることができます上記のコードで

var sqlCommand = sqlConnection3.CreateCommand(); 
sqlCommand.CommandText = "Select FileData.PathName() As Path, GET_FILESTREAM_TRANSACTION_CONTEXT() As TransactionContext From PictureTable Where PkId = (Select Max(PkId) From PictureTable)"; 

var reader = sqlCommand.ExecuteReader(); 
reader.Read(); 
var filePath = (string)reader["Path"]; 
var transactionContext = (byte[])reader["TransactionContext"]; 
var sqlFileStream = new SqlFileStream(filePath, transactionContext, FileAccess.Read); 
var data = new byte[sqlFileStream.Length]; 
sqlFileStream.Read(data, 0, Convert.ToInt16(sqlFileStream.Length)); 

:読むためにSqlFileStreamを使用してvarbinary(max)を使用しない場合はどうなり

Select FileData From PictureTable Where PkId = (Select Max(PkId) From PictureTable) 

そして書く?

SQL Serverとアプリケーションが別のサーバーにインストールされている場合、SqlFileStreamファイルパスにアクセスするためのセットアップWindows認証に問題があります。どのように私はこの問題を避けることができますか?

答えて

2

Microsoftのドキュメントによれば、SqlFileStreamは適切な解決策です(here参照)。 SqlFileStreamは、ファイルストリームに格納されたデータが行ベースのデータファイル(here参照)に格納されているデータと異なるため、ファイルハンドルのような他の処理を行います。

希望すると便利です。

関連する問題