问题标签 [filetable]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
290 浏览

sql-server - IIS 和 sql server 文件表中的虚拟目录

我有一个 ASP.NET MVC 应用程序,它有两个虚拟目录。第一个(我们将其命名为 FirstDir)引用服务器上的某个文件夹(例如 C:\SomeDir)。

我连接到 MS SQL Server 数据库。这个数据库有一个名为 MyFiles 的文件表。我可以通过 path 在 Windows Explorer 中浏览表 MyFiles 的目录\\sql-server-instance-name\mssqlserver\MyData\MyFiles。它包含存储在表 MyFiles 中的文件。

我的应用程序中的第二个虚拟目录 (SecondDir) 引用 MyFiles tabe 的目录 ( \\sql-server-instance-name\mssqlserver\MyData\MyFiles),因为我想直接从我的 ASP.NET 应用程序使用存储在此表中的文件。

然后我编写以下标记:

首先img正确加载图像。但是第二张图片没有加载(错误 500.19)。是否可以在浏览器中从 FileTable 的目录中获取图像?

更新:

我可以通过 UNC 路径从浏览器中的文件表加载图像(如下所示:),\\sql-server-instance-name\mssqlserver\MyData\MyFiles\first.png但我不能将此路径用作 img-tag 中的 src(浏览器控制台中的消息:'不允许加载本地资源')

0 投票
1 回答
1273 浏览

sql-server - 从 IIS 访问 SQL Server FileTable

创建文件表后,我有一个共享文件夹 \\<my domain>\mssqlserver\<filestream directory>\<my table> ,我在 SqlServer 配置管理器中进行了所有必要的设置以使其可用,并添加了几个带有数据库存储过程的文件。

我为我的网站创建了虚拟文件夹, http://localhost/<my ewb site>/<virtual folder>/ 引用了共享表文件夹。

当我尝试从文件夹中获取文件时出现错误:HTTP 500.19 - 内部服务器错误代码 0x80070032

我在 ASP.NET 网站中使用 File.CreateFile 将文件插入 Sql Server 2012 FileTable 时发现了这个问题 Access Denied 的答案

但这只是配置的数据库部分。我不明白如何配置 IIS 和虚拟文件夹以授予对共享文件夹的访问权限。

0 投票
3 回答
1212 浏览

sql-server - SQL Server FileTable 移动目录与内容 T-SQL

我目前正在考虑尝试将 FileTable 中的目录从一个位置移动到另一个位置。我似乎找不到任何有关如何通过 T-SQL 将包含子目录和文件的目录移动到不同位置的信息。

我找到了如何将文件从一个位置移动到另一个位置的示例,并且只要目录为空,此方法就可以在目录上工作,但当它包含内容时则不会,因为它会引发冲突。

我认为这是因为路径定位器需要在正在移动的目录上的任何下划线内容中重新生成,但我不知道如何实现这一点。

任何帮助或指导将不胜感激

更新一

在对当前版本的 SQL Server 2016 进行大量研究之后,如果没有某种形式的递归逻辑,我看不到这样做的方法。我几乎完全拥有了我试图通过在 C# 代码中为我的开源数据库库使用递归逻辑来构建的解决方案,而不是在 T-SQL 中全部完成。

完成后,我将进一步更新该过程及其工作原理。

0 投票
0 回答
1850 浏览

sql-server - SQL Server - 将 FileTable 目录设置为“C:\Example”

如何将 a 设置FileTable_Directory为自定义路径,例如C:\Example?我可以根据需要更改此目录吗?它会反映数据库更新时的更改吗?这是我的 FileTable 设置:

0 投票
1 回答
450 浏览

sql - 启用 FILESTREAM 功能的 SQL Server 性能

我们有一个大型 SQL Server 实例,我们计划在其中一个新数据库中使用 FILETABLE。要使用 FILETABLE,我们需要使用 FILESTREAM 访问级别设置在 SQL Server 实例级别启用 FILESTREAM 功能。我们担心如果在服务器实例级别启用 FILESTREAM 选项会对实例中其他数据库的整体性能产生负面影响,即使它们没有使用 FILESTREAM 功能。

0 投票
5 回答
498 浏览

sql-server - FileTable 分隔字符串拆分

编辑 - 为了清楚起见,我会将目标句放在顶部。测试和我的问题是是否有办法在不使用临时表的情况下获得与临时表相同的性能。

我觉得这应该是一个简单的问题,但我被困住了。我正在 SQL2014 中试验 FileTables。我知道一些可行的替代方案,但目标是确定从文件表中提取文本子字符串的可行性。

该测试有 35,000 个文本文件,其中一行文本如下,每个文件平均有 100 个字节的非 unicode 文本。

所需的输出是每个文件的一行,并将分隔字符串分成七列。

我找到了一个快速的字符串解析器函数,但与 varchar 列相比,在文件流上运行对性能有显着影响。

此查询需要 18 秒才能运行。我试图让从文件流到 varchar 的转换只执行一次,但我认为调用 UDF 可能会导致它发生在每一行(文件)。

我已经尝试将其作为视图、cte 和子查询。唯一似乎有帮助的是创建一个临时表。创建临时表需要 1 秒,查询需要 1 秒。因此,对于 35k 行,总查询时间为 2 秒,而总查询时间为 18 秒。

我已经阅读了很多关于文件表和临时表与单个查询性能主题的文章和博客,但我似乎无法弄清楚。它可能与 sargable 或统计有关?非常感谢任何建议。

这是 UDF,我在 MSDN 博客/论坛上找到了它,它是迄今为止我发现的表现最好的。

这是临时表的执行计划。

这是视图的计划。

编辑:对此进行了不同的搜索,发现答案是使用 top 和 order by。这使它缩短到 4 秒。似乎有点做作,仍然没有解释查看查询计划如何帮助解决这个问题,所以我自己不会回答这个问题,而是让它保持打开状态。

0 投票
1 回答
798 浏览

sql - 在 Sql Server FileTable 中创建子目录

我有一个在 FileTable 中创建子目录的简单脚本:

它工作正确,如果我运行它,SqlServer 会创建子目录“SomeFolder”。但是,如果我尝试创建嵌套子文件夹,则会遇到错误:

错误信息是:An invalid filename, 'FirstLevel\SecondLevel', caused a FileTable check constraint error. Use a valid Windows filename

据我所知,我必须为父文件夹添加 parent_path_locator 列,例如:

但我还没有pathLocatorForFirstLevel导致FirstLevel尚未创建。也许有人知道如何创建具有任意名称的子文件夹?

0 投票
0 回答
59 浏览

.net - SQL Server 语义搜索:varchar(max) vs filetable

根据您的经验,对 html、word 和 pdf 文件执行语义搜索的最佳选择是什么?文件应该保存在varchar(max)列中还是直接保存在磁盘上(在 a 中FileTable)?

文件大小不限于最大预定义大小,但其中大多数预计超过 1 或 2 MB。我们认为我们每个月将有数千个文档(我们可能每年上传超过 20 万个文件),我们有兴趣从这 3 种类型的文件中获取结果。

你有什么建议?

多谢你们!

路易斯

0 投票
1 回答
524 浏览

sql - 另一个表中的 FileTable 和外键

我尝试将 FileTable 与 Entity Framework 一起使用(我知道它不被直接支持)。所以我使用自定义 Sql 命令来插入和删除(不更新)数据。我的问题是我有一个表,它使用 FileTable 的 stream_id 的外键引用 FileTable。如果我插入到 FileTable 中,如何取回 stream_id?

我想使用 SqlBulkCopy 插入大量文件,我可以批量插入 FileTable,但 SqlBulkCopy 不会告诉我插入的 stream_id 值。

如果我使用 select scopeIdentity() 或类似的东西执行单个插入语句,性能会变得更糟。

我想将 5.000 个文件(2MB 到 20MB)插入到 FileTable 中,并通过外键将它们与我自己的表连接起来。这是不好的做法,我应该使用简单的路径列并将数据直接存储在文件系统中吗?我认为 FileTable 正是为我做这件事,因为我需要保护数据库并且文件总是同步的,即使我过去一小时或四天。我不能同时备份数据库和文件系统,所以它们是 100% 同步的。

0 投票
1 回答
808 浏览

sql-server - SQL Server 的 FileTable 和 ASP.NET:用户权限

我正在构建一个需要通过文件共享将文件保存到文件表的应用程序。我已经设法让它工作,但我对所需的解决方案很好奇。

就我而言,我使用的是部分包含的数据库(具有本地用户),我认为我可以简单地基于现有的 ASP.NET 身份创建一个新用户并授予它一些权限。

我的第一次尝试看起来像这样:

不幸的是,这不起作用,我不断收到“著名的”访问被拒绝错误(UnauthorizedAccessException: Access to [path] is denied)。我设法让事情正常进行的唯一方法是为我的站点的应用程序池创建一个全局 SQL Server 登录。换句话说,我不得不将 create user 替换为如下所示的内容:

然后一切都开始工作(不再出现拒绝访问错误)。

现在,我还没有找到任何文档提到我不能使用基于 Windows 帐户/身份的包含用户来处理这种类型的场景。

那么,我是不是做错了什么?或者在这种情况下,我们真的需要创建一个全局登录吗?

谢谢

路易斯