SqlFileStream 建構函式
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
初始化 SqlFileStream 類別的新執行個體。
多載
SqlFileStream(String, Byte[], FileAccess) |
初始化 SqlFileStream 類別的新執行個體。 |
SqlFileStream(String, Byte[], FileAccess, FileOptions, Int64) |
初始化 SqlFileStream 類別的新執行個體。 |
備註
下表列出堆疊中所有呼叫端都必須使用 SqlFileStream
建構函式的程式代碼存取安全性 (CAS) 許可權。
檔案存取 | 權限 |
---|---|
讀取 | Read |
寫入 | Write |
讀寫 | Read 和 Write |
如需 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 列舉值是 Read、Write 和 ReadWrite。
使用 FileAccess.Read
時,SqlFileStream
物件可以用來讀取所有現有資料。
使用 FileAccess.Write
時,SqlFileStream
指向零位元組檔案。 物件關閉及認可交易時會覆寫現有資料。
使用 FileAccess.ReadWrite
時,SqlFileStream
指向其中具有所有現有資料的檔案。 控制代碼位於檔案的開頭。 您可以使用其中一個 System.IO
Seek
方法,在檔案內移動控制代碼的位置,以便寫入或附加新資料。
例外狀況
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 列舉值是 Read、Write 和 ReadWrite。
使用 FileAccess.Read
時,SqlFileStream
物件可以用來讀取所有現有資料。
使用 FileAccess.Write
時,SqlFileStream
指向零位元組檔案。 物件關閉及認可交易時會覆寫現有資料。
使用 FileAccess.ReadWrite
時,SqlFileStream
指向其中具有所有現有資料的檔案。 控制代碼位於檔案的開頭。 您可以使用其中一個 System.IO
Seek
方法,在檔案內移動控制代碼的位置,以便寫入或附加新資料。
- options
- FileOptions
指定開啟檔案時要使用的選項。 支援的 FileOptions 值為 Asynchronous、WriteThrough、SequentialScan和 RandomAccess。
- allocationSize
- Int64
建立檔案時要用的配置大小。 如果設為 0,即使用預設值。
例外狀況
path
為 null 參考,或 transactionContext
為 null。
path
為空字串 (""),只包含空格或包含一或多個無效字元。
path
開頭為 "\\.\",例如 "\\.\PHYSICALDRIVE0 "。
呼叫 NTCreateFile 所傳回的控制代碼不是 FILE_TYPE_DISK 類型。
options
包含不支援的值。
找不到檔案。
發生 I/O 錯誤。
呼叫端沒有必要的權限。
指定的 path
無效,例如位於未對應的磁碟機上。
指定路徑的作業系統不允許要求的存取。 當 Write 或 ReadWrite 存取已指定,且檔案或目錄設為唯讀存取時,就會發生這種狀況。
NtCreateFile 會失敗並傳回設為 ERROR_SHARING_VIOLATION 的錯誤碼。
備註
如果擲回例外狀況,則應該回復任何開啟的交易。 否則,可能會發生數據遺失。