2017-12-31 203 views
1

FILESTREAM 열을 읽고 쓸 때 System.Data.SqlTypes.SqlFileStream을 사용해야합니까? 예를 들어FILESTREAM - FILESTREAM 열에서 큰 파일 읽기 및 쓰기

:

위의 코드에서
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)); 

내가 쿼리가 여기에 표시하고 직접 액세스 사용할 수있는 FileData : SqlFileStream를 사용하고 읽을 varbinary(max)를 사용하지 않는 경우 어떻게됩니까

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

쓰기?

SQL Server와 응용 프로그램을 별도의 서버에 설치하면 설치 Windows 인증에서 SqlFileStream 파일 경로에 액세스 할 때 문제가 발생합니다. 어떻게이 문제를 피할 수 있습니까?

답변

2

Microsoft의 문서에 따르면 SqlFileStream이 적절한 솔루션입니다 (here 참조). SqlFileStream은 파일 스트림에 저장된 데이터가 행 기반 데이터 파일에 저장된 데이터와 다르므로 파일 핸들과 같은 다른 작업을 처리합니다 (here 참조).

희망이 도움이됩니다.