SqlFileStream 建構函式

定義

初始化 SqlFileStream 類別的新執行個體。

多載

SqlFileStream(String, Byte[], FileAccess)

初始化 SqlFileStream 類別的新執行個體。

SqlFileStream(String, Byte[], FileAccess, FileOptions, Int64)

初始化 SqlFileStream 類別的新執行個體。

備註

下表列出堆疊中所有呼叫端都必須使用 SqlFileStream 建構函式的程式代碼存取安全性 (CAS) 許可權。

檔案存取 權限
讀取 Read
寫入 Write
讀寫 ReadWrite

如需 CAS 的詳細資訊,請參閱程式代碼存取安全性和 ADO.NET

SqlFileStream(String, Byte[], FileAccess)

初始化 SqlFileStream 類別的新執行個體。

public:
 SqlFileStream(System::String ^ path, cli::array <System::Byte> ^ transactionContext, System::IO::FileAccess access);
public SqlFileStream (string path, byte[] transactionContext, System.IO.FileAccess access);
new System.Data.SqlTypes.SqlFileStream : string * byte[] * System.IO.FileAccess -> System.Data.SqlTypes.SqlFileStream
Public Sub New (path As String, transactionContext As Byte(), access As FileAccess)

參數

path
String

檔案的邏輯路徑。 可在資料表的基礎 FILESTREAM 資料行上使用 Transact-SQL Pathname 函式來擷取路徑。

transactionContext
Byte[]

SqlFileStream 物件的交易內容。 應用程式應該會傳回透過呼叫 GET_FILESTREAM_TRANSACTION_CONTEXT 方法所傳回的位元組陣列。

access
FileAccess

開啟檔案時要使用的存取模式。 支援的 FileAccess 列舉值是 ReadWriteReadWrite

使用 FileAccess.Read 時,SqlFileStream 物件可以用來讀取所有現有資料。

使用 FileAccess.Write 時,SqlFileStream 指向零位元組檔案。 物件關閉及認可交易時會覆寫現有資料。

使用 FileAccess.ReadWrite 時,SqlFileStream 指向其中具有所有現有資料的檔案。 控制代碼位於檔案的開頭。 您可以使用其中一個 System.IOSeek 方法,在檔案內移動控制代碼的位置,以便寫入或附加新資料。

例外狀況

path 為 null 參考,或 transactionContext 為 null。

path 為空字串 (""),只包含空格或包含一或多個無效字元。

path 開頭為 "\\.\",例如 "\\.\PHYSICALDRIVE0 "。

呼叫至 NTCreateFile 所傳回的控制代碼不是 FILE_TYPE_DISK 類型。

options 包含不支援的值。

找不到檔案。

發生 I/O 錯誤。

呼叫端沒有必要的權限。

指定的 path 無效,例如位於未對應的磁碟機上。

指定路徑的作業系統不允許要求的存取。 當 Write 或 ReadWrite 存取已指定,且檔案或目錄設為唯讀存取時,就會發生這種狀況。

NtCreateFile 會失敗並傳回設為 ERROR_SHARING_VIOLATION 的錯誤碼。

備註

如果擲回例外狀況,則應該回復任何開啟的交易。 否則,可能會發生數據遺失。

另請參閱

適用於

SqlFileStream(String, Byte[], FileAccess, FileOptions, Int64)

初始化 SqlFileStream 類別的新執行個體。

public:
 SqlFileStream(System::String ^ path, cli::array <System::Byte> ^ transactionContext, System::IO::FileAccess access, System::IO::FileOptions options, long allocationSize);
public SqlFileStream (string path, byte[] transactionContext, System.IO.FileAccess access, System.IO.FileOptions options, long allocationSize);
new System.Data.SqlTypes.SqlFileStream : string * byte[] * System.IO.FileAccess * System.IO.FileOptions * int64 -> System.Data.SqlTypes.SqlFileStream
Public Sub New (path As String, transactionContext As Byte(), access As FileAccess, options As FileOptions, allocationSize As Long)

參數

path
String

檔案的邏輯路徑。 可在資料表的基礎 FILESTREAM 資料行上使用 Transact-SQL Pathname 函式來擷取路徑。

transactionContext
Byte[]

SqlFileStream 物件的交易內容。 當設定為 null 時,隱含的交易會用於 SqlFileStream 物件。 應用程式應該會傳回透過呼叫 GET_FILESTREAM_TRANSACTION_CONTEXT 方法所傳回的位元組陣列。

access
FileAccess

開啟檔案時要使用的存取模式。 支援的 FileAccess 列舉值是 ReadWriteReadWrite

使用 FileAccess.Read 時,SqlFileStream 物件可以用來讀取所有現有資料。

使用 FileAccess.Write 時,SqlFileStream 指向零位元組檔案。 物件關閉及認可交易時會覆寫現有資料。

使用 FileAccess.ReadWrite 時,SqlFileStream 指向其中具有所有現有資料的檔案。 控制代碼位於檔案的開頭。 您可以使用其中一個 System.IOSeek 方法,在檔案內移動控制代碼的位置,以便寫入或附加新資料。

options
FileOptions

指定開啟檔案時要使用的選項。 支援的 FileOptions 值為 AsynchronousWriteThroughSequentialScanRandomAccess

allocationSize
Int64

建立檔案時要用的配置大小。 如果設為 0,即使用預設值。

例外狀況

path 為 null 參考,或 transactionContext 為 null。

path 為空字串 (""),只包含空格或包含一或多個無效字元。

path 開頭為 "\\.\",例如 "\\.\PHYSICALDRIVE0 "。

呼叫 NTCreateFile 所傳回的控制代碼不是 FILE_TYPE_DISK 類型。

options 包含不支援的值。

找不到檔案。

發生 I/O 錯誤。

呼叫端沒有必要的權限。

指定的 path 無效,例如位於未對應的磁碟機上。

指定路徑的作業系統不允許要求的存取。 當 Write 或 ReadWrite 存取已指定,且檔案或目錄設為唯讀存取時,就會發生這種狀況。

NtCreateFile 會失敗並傳回設為 ERROR_SHARING_VIOLATION 的錯誤碼。

備註

如果擲回例外狀況,則應該回復任何開啟的交易。 否則,可能會發生數據遺失。

另請參閱

適用於