gpt4 book ai didi

sql-server - 从 SQL CLR 程序集访问 FILESTREAM

转载 作者:行者123 更新时间:2023-12-02 05:18:40 26 4
gpt4 key购买 nike

我正在尝试从不安全的 SQL CLR 程序集流式传输 FILESTREAM 数据。

连接字符串是

Data Source=LAPTOP2\SQLEXPRESS;Initial Catalog=test;Integrated Security=True;Enlist=False

当创建一个新的 SqlFileStream 时(当然是在 SqlTransaction 中),我得到:

The request is not supported

OpenSqlFilestream

所以我决定尝试原生 OpenSqlFilestream ,但随后我得到一个无效句柄 (-1) 而 GetLastWin32Error 返回相同的句柄:

The request is not supported (ERROR_NOT_SUPPORTED).

我也试过 SqlContext.WindowsIdentity.Impersonate() 没有明显效果。

我找不到任何引用此限制的文档。真的不支持吗?如果不支持,是否有充分的理由?有人知道解决方法吗?

最佳答案

要访问外部资源,如果您对程序集使用 external_access 或 unsafe 权限,则需要将 trustworthy 设置为数据库,否则 SQL Server 根本不会信任您的代码,不会让它离开实例。对于文件访问(阅读),我使用了

            System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
using (StreamReader reader = new StreamReader(FilePath, Encoding.Default))
{

string line;
string allLine = "";

while ((line = reader.ReadLine()) != null)
{

allLine += line;

}

}

以及文件写入用

FileStream aFile = new FileStream(path, FileMode.Append, FileAccess.Write);
StreamWriter sw = new StreamWriter(aFile, Encoding.Default);

sw.Write(FilecontentsTOWrite);
sw.Close();
aFile.Close();

关于sql-server - 从 SQL CLR 程序集访问 FILESTREAM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12986909/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com