SqlFileStream 构造函数

定义

初始化 SqlFileStream 类的新实例。

重载

SqlFileStream(String, Byte[], FileAccess)

初始化 SqlFileStream 类的新实例。

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

初始化 SqlFileStream 类的新实例。

注解

下表列出了代码访问安全性 (CAS) 权限,堆栈中的所有调用方必须使用这些 SqlFileStream 构造函数。

文件访问 权限
读取 Read
写入 Write
ReadWrite 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。

注解

如果引发异常,则应回滚所有打开的事务。 否则,可能会丢失数据。

另请参阅

适用于