我们有一个 SQL Server 2014 (build 12.0.24457.0) 数据库,里面有两个表,都是 FileStream 表,最大的有 2979466 行,SUM(cached_file_size)= 40564905472.
我们已尝试将此数据库恢复到我们的测试服务器上,但需要很长时间。我们的 DBA 在 14 天后放弃了。
有没有其他人尝试使用 FileStream 表还原数据库,其中包含更多文件?
我正在运行这个脚本来监控进度:
BEGIN TRY
DROP TABLE #h
END TRY
BEGIN CATCH
END CATCH
DECLARE @r INT=1, @percent_complete NUMERIC(9,2), @Extimated_Completion_Datetime DATETIME2(0)
CREATE TABLE #h ( start_time DATETIME2(0), percent_complete NUMERIC(9,2), Estimated_completion_time NUMERIC(9,2), HoursSinceStart NUMERIC(9,2), Extimated_Completion_Datetime DATETIME2(0), session_id INT, created_date datetime2(0))
DECLARE @d VARCHAR(19) , @e VARCHAR(max)
WHILE @r > 0 BEGIN
INSERT INTO #h
SELECT start_time, percent_complete, CAST(ROUND(estimated_completion_time/3600000.0,1) AS DECIMAL(9,1)) AS …Run Code Online (Sandbox Code Playgroud) 有一个实验室项目。需要为研究保存实验室数据(原始数据和相关信息)多年。
所以数据必须保存多年,但是数据这么大,每一个原始数据都超过10GB。如果我们将原始数据存储在 SQL Server 中FILETABLE,并将相关信息存储在标准 SQL Server 表中,几个月或几年后,数据库大小将如此之大,以至于我们必须将一些历史数据移出数据库。
也许我们可以使用将文件(在不同的硬盘上)添加到FILESTREAMfiletable的文件组(存储原始数据),但我觉得这不适合维护SQL Server。我们必须保持原始数据和相关信息的一致性。
我们考虑过使用磁带来保存历史原始数据。我们想用硬盘来保存最新的原始数据,用磁带来保存历史的原始数据。当我们将历史数据移动到磁带上时,我们将移动记录在日志表中,这样我们就可以知道历史数据移动到哪里并尽快提取。
有没有好的建议:
filetable适合这种情况?我使用带有 FileTables 的 SQL Server 2014 来存储大量不同格式的文档。iFilter 运行良好,所有内容都使用 FTS + 语义搜索编制索引。现在我想对这些文档的文本进行一些额外的处理,但没有理由让管道重做解码、提取等文件中的文本的工作。
似乎应该有一个明显的解决方案......但我一直在兜圈子,没有任何运气。
所以问题是:
如何查询以在 T-SQL 中返回文件的完整纯文本?
如果这是不可能的,可以在正常的 FTS 解析器运行后在 SSIS 或 SSAS 中完成吗?
如果这是不可能的,有没有办法连接到 FTS 管道(可能通过触发器),以便我可以将纯文本拆分到另一个表中?
如果您有很好的示例供我参考,也欢迎使用其他解决方案。我唯一的直接想法是使用不同的网络共享进行下载,让 SSIS 拿起文件并提取文本(不知道怎么做),然后将文件 + 文本移动到 SQL 服务器......但是由于很多原因,这似乎很不稳定。
[编辑以澄清“为什么”]
如果 SQL Server 已经提取了文本以便对其进行分块并为语义索引执行基本 NLP ......我宁愿使用它而不是重新发明轮子。我正在研究的具体用途是使用其他 NLP 实用程序(例如 NLTK、GenSim、Stanford NLP NER 等)进行后处理,以便我可以生成提取文档摘要,为我的语料库存储 n-gram 统计信息,并将 NER 包括在内更有效的分面搜索。
如果我必须在将文件存储在 SQL Server 之前从文件中提取文本(使用 SSIS/.NET 以便我可以保留 iFilter 或完全使用不同的工具),则 SQL Server 在 FileTables 上执行该工作的能力有限除了最基本的任务之外的任何事情。
考虑已经支持的文档格式的数量 - 重新创建该功能是一项主要任务。同样,之后必须返回到实际文件并重做索引工作效率低下,在 FileTables 上禁用 FTS,完全跳过使用它们,或者完全废弃 SQL Server 以使用基于文档的 FTS,这似乎是明智的。